[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: [TSVN] Tortoiseproc apparently must have a shell

From: SteveKing <steveking_at_gmx.ch>
Date: 2005-06-22 19:12:14 CEST

Thomas Denk wrote:
>>What are the process creation flags? Maybe there's something set there
>
> which shouldn't be?
> They have:
> DWORD dwFlags = CREATE_DEFAULT_ERROR_MODE | CREATE_SUSPENDED;
> As opposed to 0L in the Tortoise shell extension.
>
> No idea what the "default error mode" is really, but "default" sounds
> like "should work in most cases" :-)
> CREATE_SUSPENDED might of course be a reason, but they call
> ResumeThread(pi.hThread) at some point later.

CREATE_SUSPENDED really might be the reason here.
Question: do they check the return value of ResumeThread()?

>>Also, if you create the registry key
>>HKCU\Software\TortoiseSVN\Debug
>>with a DWORD value != 0, then TortoiseProc will show you a messagebox
>
> with the command line params it received on each startup. Maybe you can
> see there >what's wrong.
>
> Now this is truly surprising... I added that debug registry key (not
> believing the command line params were wrong, but nevertheless going to
> make sure), and it suddenly worked fine! It showed the commandline
> parameters, and then it started into GUI just as it should. Tried a
> dozen times with different parameters, always the same result.
> Deleted that debug key, and it is dysfunct again. Did not change a line
> of my code. No way I can get it to run now, except by starting from cmd.

That's now *really* strange. If you look at what TSVN does if the
registry value is set:

        if (CRegDWORD(_T("Software\\TortoiseSVN\\Debug"), FALSE)==TRUE)
                AfxMessageBox(AfxGetApp()->m_lpCmdLine, MB_OK | MB_ICONINFORMATION);

That's all! Nothing more is done if that flag is set. So why it works
with that and not without it is a real mistery to me...

> Slightly off-topic, to give you a smile, here is something I discovered
> in the wx sources:
> if ( flags & wxEXEC_SYNC )
> {
> int running;
> do
> {
> wxYield();
> running = GetModuleUsage((HINSTANCE)instanceID);
> } while (running);
> }
> They do it, too :-)

Yikes! Now I know why I threw away wxWindows when I started on TSVN ;)

Stefan

-- 
        ___
   oo  // \\      "De Chelonian Mobile"
  (_,\/ \_/ \     TortoiseSVN
    \ \_/_\_/>    The coolest Interface to (Sub)Version Control
    /_/   \_\     http://tortoisesvn.tigris.org
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tortoisesvn.tigris.org
For additional commands, e-mail: dev-help@tortoisesvn.tigris.org
Received on Wed Jun 22 19:12:35 2005

This is an archived mail posted to the TortoiseSVN Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.