Hi,

I'm using XPCOM components in a server (no UI) on Windows. The application is a SOAP server waiting for socket connections from clients, upon which it then processes the SOAP request using the XPCOM components.

There is a problem with this server were Windows DDE requests will hang while the server is running. This means that any DDE request like pressing Windows-E to start explorer, or double clicking a file to open it in a text editor will cause the system to hang while the server is running.

I have isolated the problem to the fact that starting XPCOM creates a top-level window under Windows for the use of the eventQ service. Under Windows, DDE messages will be sent to all top-level windows. Until the DDE message is handled, the application calling DdeConnect() will hang.

The window has a class of "XPCOM:EventQueue" and is created within NS_InitXPCOM2() at the following lines:

nsxpcominit.cpp:584
    rv = eventQService->CreateThreadEventQueue();
    if ( NS_FAILED(rv) ) return rv;

If I set a breakpoint here and skip executing these lines, the application runs fine and without the DDE problem.

If NS_InitXPCOM2() had another parameter like:
PRBool startEventQueue = PR_TRUE
which skipped the creation of the ThreadEventQueue when FALSE it would be the best solution for me. However I would like to solve this without modifying the standard Mozilla code if possible.


Can someone advise me how I might get around this problem? Do I need to create some sort of message loop to handle this?

Regards,
Brodie.


_______________________________________________ Mozilla-xpcom mailing list [EMAIL PROTECTED] http://mail.mozilla.org/listinfo/mozilla-xpcom

Reply via email to