Mike Hearn <mike(a)navi.cx> writes:
There was a crash in the previous patch, here is a fixed version.
- Add a new wineshell process, and put system tray handling in there - Rewrite the shell32 systray handling to be out of process - Support the freedesktop.org XEMBED protocol
It would be nice to do the XEMBED stuff as a separate patch. Also I was hoping you would get rid of WS_EX_TRAYWINDOW instead of adding even more uses of it...
+ /* we can't intern this with the rest as it depends on the screen we are connecting to */ + systray_buffer = HeapAlloc(GetProcessHeap(), 0, sizeof(char)*20); + sprintf(systray_buffer, "_NET_SYSTEM_TRAY_S%d", DefaultScreen(display));
The screen will be 0 in 99.9% of the cases, you should preallocate that one.
+void *xmalloc(unsigned int size) +{ + void *p = HeapAlloc(GetProcessHeap(), 0, size); + + if (!p) + { + fprintf(stderr, "wineshell: virtual memory exhausted\n"); + exit(1); + } + + ZeroMemory(p, size);
exit(1) is not acceptable here, you should handle allocation failures properly. Also malloc doesn't clear the buffer so xmalloc shouldn't either, otherwise it's very confusing.
+struct request { + NOTIFYICONDATAA ansi; + NOTIFYICONDATAW wide; + BOOL unicode; + BYTE *copydata;
Inter-process data should always be sent in Unicode. -- Alexandre Julliard julliard(a)winehq.org