Author: fireball Date: Fri Jan 22 23:30:22 2010 New Revision: 45206
URL: http://svn.reactos.org/svn/reactos?rev=45206&view=rev Log: [vendor/wine] - Import Wine-1.1.37 gdi32, user32, winex11.drv, wineserver.
Modified: vendor/wine/dlls/gdi32/current/freetype.c vendor/wine/dlls/gdi32/current/tests/font.c vendor/wine/dlls/user32/current/defwnd.c vendor/wine/dlls/user32/current/input.c vendor/wine/dlls/user32/current/menu.c vendor/wine/dlls/user32/current/misc.c vendor/wine/dlls/user32/current/scroll.c vendor/wine/dlls/user32/current/tests/menu.c vendor/wine/dlls/user32/current/tests/msg.c vendor/wine/dlls/user32/current/tests/win.c vendor/wine/dlls/winex11.drv/current/keyboard.c vendor/wine/dlls/winex11.drv/current/systray.c vendor/wine/server/current/change.c vendor/wine/server/current/main.c vendor/wine/server/current/queue.c vendor/wine/server/current/sock.c
Modified: vendor/wine/dlls/gdi32/current/freetype.c URL: http://svn.reactos.org/svn/reactos/vendor/wine/dlls/gdi32/current/freetype.c... ============================================================================== --- vendor/wine/dlls/gdi32/current/freetype.c [iso-8859-1] (original) +++ vendor/wine/dlls/gdi32/current/freetype.c [iso-8859-1] Fri Jan 22 23:30:22 2010 @@ -2171,7 +2171,7 @@ BOOL WineEngRemoveFontResourceEx(LPCWSTR file, DWORD flags, PVOID pdv) { GDI_CheckNotLock(); - FIXME(":stub\n"); + FIXME("(%s, %x, %p): stub\n", debugstr_w(file), flags, pdv); return TRUE; }
@@ -6679,25 +6679,25 @@
INT WineEngAddFontResourceEx(LPCWSTR file, DWORD flags, PVOID pdv) { - FIXME(":stub\n"); + FIXME("(%s, %x, %p): stub\n", debugstr_w(file), flags, pdv); return 1; }
INT WineEngRemoveFontResourceEx(LPCWSTR file, DWORD flags, PVOID pdv) { - FIXME(":stub\n"); + FIXME("(%s, %x, %p): stub\n", debugstr_w(file), flags, pdv); return TRUE; }
HANDLE WineEngAddFontMemResourceEx(PVOID pbFont, DWORD cbFont, PVOID pdv, DWORD *pcFonts) { - FIXME(":stub\n"); + FIXME("(%p, %u, %p, %p): stub\n", pbFont, cbFont, pdv, pcFonts); return NULL; }
UINT WineEngGetTextCharsetInfo(GdiFont *font, LPFONTSIGNATURE fs, DWORD flags) { - FIXME(":stub\n"); + FIXME("(%p, %p, %u): stub\n", font, fs, flags); return DEFAULT_CHARSET; }
Modified: vendor/wine/dlls/gdi32/current/tests/font.c URL: http://svn.reactos.org/svn/reactos/vendor/wine/dlls/gdi32/current/tests/font... ============================================================================== --- vendor/wine/dlls/gdi32/current/tests/font.c [iso-8859-1] (original) +++ vendor/wine/dlls/gdi32/current/tests/font.c [iso-8859-1] Fri Jan 22 23:30:22 2010 @@ -2848,7 +2848,7 @@ static void test_oemcharset(void) { HDC hdc; - LOGFONTA lf; + LOGFONTA lf, clf; HFONT hfont, old_hfont; int charset;
@@ -2863,7 +2863,12 @@ charset = GetTextCharset(hdc); todo_wine ok(charset == OEM_CHARSET, "expected %d charset, got %d\n", OEM_CHARSET, charset); - SelectObject(hdc, old_hfont); + hfont = SelectObject(hdc, old_hfont); + GetObjectA(hfont, sizeof(clf), &clf); + ok(!lstrcmpA(clf.lfFaceName, lf.lfFaceName), "expected %s face name, got %s\n", lf.lfFaceName, clf.lfFaceName); + ok(clf.lfPitchAndFamily == lf.lfPitchAndFamily, "expected %x family, got %x\n", lf.lfPitchAndFamily, clf.lfPitchAndFamily); + ok(clf.lfCharSet == lf.lfCharSet, "expected %d charset, got %d\n", lf.lfCharSet, clf.lfCharSet); + ok(clf.lfHeight == lf.lfHeight, "expected %d height, got %d\n", lf.lfHeight, clf.lfHeight); DeleteObject(hfont); DeleteDC(hdc); }
Modified: vendor/wine/dlls/user32/current/defwnd.c URL: http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/defwnd.c?... ============================================================================== --- vendor/wine/dlls/user32/current/defwnd.c [iso-8859-1] (original) +++ vendor/wine/dlls/user32/current/defwnd.c [iso-8859-1] Fri Jan 22 23:30:22 2010 @@ -561,7 +561,11 @@ } } else if( wParam == VK_F10 ) + { + if (GetKeyState(VK_SHIFT) & 0x8000) + SendMessageW( hwnd, WM_CONTEXTMENU, (WPARAM)hwnd, MAKELPARAM(-1, -1) ); iF10Key = 1; + } else if( wParam == VK_ESCAPE && (GetKeyState(VK_SHIFT) & 0x8000)) SendMessageW( hwnd, WM_SYSCOMMAND, SC_KEYMENU, ' ' ); break;
Modified: vendor/wine/dlls/user32/current/input.c URL: http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/input.c?r... ============================================================================== --- vendor/wine/dlls/user32/current/input.c [iso-8859-1] (original) +++ vendor/wine/dlls/user32/current/input.c [iso-8859-1] Fri Jan 22 23:30:22 2010 @@ -101,12 +101,15 @@ } SERVER_END_REQ;
- USER_Driver->pSetCapture( hwnd, gui_flags ); - - if (previous && previous != hwnd) - SendMessageW( previous, WM_CAPTURECHANGED, 0, (LPARAM)hwnd ); - - if (prev_ret) *prev_ret = previous; + if (ret) + { + USER_Driver->pSetCapture( hwnd, gui_flags ); + + if (previous && previous != hwnd) + SendMessageW( previous, WM_CAPTURECHANGED, 0, (LPARAM)hwnd ); + + if (prev_ret) *prev_ret = previous; + } return ret; }
@@ -226,7 +229,7 @@ */ HWND WINAPI DECLSPEC_HOTPATCH SetCapture( HWND hwnd ) { - HWND previous; + HWND previous = 0;
set_capture_window( hwnd, 0, &previous ); return previous; @@ -241,7 +244,7 @@ BOOL ret = set_capture_window( 0, 0, NULL );
/* Somebody may have missed some mouse movements */ - mouse_event( MOUSEEVENTF_MOVE, 0, 0, 0, 0 ); + if (ret) mouse_event( MOUSEEVENTF_MOVE, 0, 0, 0, 0 );
return ret; }
Modified: vendor/wine/dlls/user32/current/menu.c URL: http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/menu.c?re... ============================================================================== --- vendor/wine/dlls/user32/current/menu.c [iso-8859-1] (original) +++ vendor/wine/dlls/user32/current/menu.c [iso-8859-1] Fri Jan 22 23:30:22 2010 @@ -3119,6 +3119,7 @@ switch(msg.wParam) { case VK_MENU: + case VK_F10: fEndMenu = TRUE; break;
Modified: vendor/wine/dlls/user32/current/misc.c URL: http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/misc.c?re... ============================================================================== --- vendor/wine/dlls/user32/current/misc.c [iso-8859-1] (original) +++ vendor/wine/dlls/user32/current/misc.c [iso-8859-1] Fri Jan 22 23:30:22 2010 @@ -539,8 +539,8 @@ */ HDEVNOTIFY WINAPI RegisterDeviceNotificationA(HANDLE hnd, LPVOID notifyfilter, DWORD flags) { - FIXME("(hwnd=%p, filter=%p,flags=0x%08x),\n" - "\treturns a fake device notification handle!\n", hnd,notifyfilter,flags ); + FIXME("(hwnd=%p, filter=%p,flags=0x%08x) returns a fake device notification handle!\n", + hnd,notifyfilter,flags ); return (HDEVNOTIFY) 0xcafecafe; }
@@ -569,8 +569,8 @@ */ HDEVNOTIFY WINAPI RegisterDeviceNotificationW(HANDLE hRecepient, LPVOID pNotificationFilter, DWORD dwFlags) { - FIXME("(hwnd=%p, filter=%p,flags=0x%08x),\n" - "\treturns a fake device notification handle!\n", hRecepient,pNotificationFilter,dwFlags ); + FIXME("(hwnd=%p, filter=%p,flags=0x%08x) returns a fake device notification handle!\n", + hRecepient,pNotificationFilter,dwFlags ); return (HDEVNOTIFY) 0xcafeaffe; }
Modified: vendor/wine/dlls/user32/current/scroll.c URL: http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/scroll.c?... ============================================================================== --- vendor/wine/dlls/user32/current/scroll.c [iso-8859-1] (original) +++ vendor/wine/dlls/user32/current/scroll.c [iso-8859-1] Fri Jan 22 23:30:22 2010 @@ -317,6 +317,7 @@ { INT thumbSize; INT pixels = vertical ? rect->bottom-rect->top : rect->right-rect->left; + INT range;
if ((pixels -= 2*(GetSystemMetrics(SM_CXVSCROLL) - SCROLL_ARROW_THUMB_OVERLAP)) <= 0) return infoPtr->minVal; @@ -333,9 +334,12 @@ pos = max( 0, pos - (GetSystemMetrics(SM_CXVSCROLL) - SCROLL_ARROW_THUMB_OVERLAP) ); if (pos > pixels) pos = pixels;
- if (!infoPtr->page) pos *= infoPtr->maxVal - infoPtr->minVal; - else pos *= infoPtr->maxVal - infoPtr->minVal - infoPtr->page + 1; - return infoPtr->minVal + ((pos + pixels / 2) / pixels); + if (!infoPtr->page) + range = infoPtr->maxVal - infoPtr->minVal; + else + range = infoPtr->maxVal - infoPtr->minVal - infoPtr->page + 1; + + return infoPtr->minVal + MulDiv(pos, range, pixels); }
/***********************************************************************
Modified: vendor/wine/dlls/user32/current/tests/menu.c URL: http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/tests/men... ============================================================================== --- vendor/wine/dlls/user32/current/tests/menu.c [iso-8859-1] (original) +++ vendor/wine/dlls/user32/current/tests/menu.c [iso-8859-1] Fri Jan 22 23:30:22 2010 @@ -1890,8 +1890,10 @@ { INPUT_KEYBOARD, {{0}}, {'D', 0}, FALSE, FALSE }, { INPUT_KEYBOARD, {{0}}, {VK_MENU, 'M', 'P', 0}, TRUE, FALSE }, { INPUT_KEYBOARD, {{0}}, {'E', 0}, FALSE, FALSE }, - - { INPUT_MOUSE, {{1, 2}, {0}}, {0}, TRUE, TRUE }, /* test 18 */ + { INPUT_KEYBOARD, {{0}}, {VK_F10, 0}, TRUE, FALSE }, + { INPUT_KEYBOARD, {{0}}, {VK_F10, 0}, FALSE, FALSE }, + + { INPUT_MOUSE, {{1, 2}, {0}}, {0}, TRUE, TRUE }, /* test 20 */ { INPUT_MOUSE, {{1, 1}, {0}}, {0}, FALSE, FALSE }, { INPUT_MOUSE, {{1, 0}, {0}}, {0}, TRUE, TRUE }, { INPUT_MOUSE, {{1, 1}, {0}}, {0}, FALSE, FALSE },
Modified: vendor/wine/dlls/user32/current/tests/msg.c URL: http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/tests/msg... ============================================================================== --- vendor/wine/dlls/user32/current/tests/msg.c [iso-8859-1] (original) +++ vendor/wine/dlls/user32/current/tests/msg.c [iso-8859-1] Fri Jan 22 23:30:22 2010 @@ -6903,6 +6903,32 @@ { WM_SYSKEYUP, sent|wparam|lparam, VK_F10, 0xc0000001 }, { 0 } }; +static const struct message WmShiftF10Seq[] = { + { HCBT_KEYSKIPPED, hook|wparam|lparam|optional, VK_SHIFT, 1 }, /* XP */ + { WM_KEYDOWN, wparam|lparam, VK_SHIFT, 1 }, + { WM_KEYDOWN, sent|wparam|lparam, VK_SHIFT, 0x00000001 }, + { HCBT_KEYSKIPPED, hook|wparam|lparam|optional, VK_F10, 1 }, /* XP */ + { WM_SYSKEYDOWN, wparam|lparam, VK_F10, 1 }, + { WM_SYSKEYDOWN, sent|wparam|lparam, VK_F10, 0x00000001 }, + { WM_CONTEXTMENU, sent|defwinproc|lparam, /*hwnd*/0, MAKELPARAM(-1, -1) }, + { HCBT_KEYSKIPPED, hook|wparam|lparam|optional, VK_F10, 0xc0000001 }, /* XP */ + { WM_SYSKEYUP, wparam|lparam, VK_F10, 0xc0000001 }, + { WM_SYSKEYUP, sent|wparam|lparam, VK_F10, 0xc0000001 }, + { WM_SYSCOMMAND, sent|defwinproc|wparam, SC_KEYMENU }, + { HCBT_SYSCOMMAND, hook }, + { WM_ENTERMENULOOP, sent|defwinproc|wparam|lparam, 0, 0 }, + { WM_INITMENU, sent|defwinproc }, + { WM_MENUSELECT, sent|defwinproc|wparam, MAKEWPARAM(0,MF_SYSMENU|MF_POPUP|MF_HILITE) }, + { HCBT_KEYSKIPPED, hook|wparam|lparam|optional, VK_SHIFT, 0xd0000001 }, /* XP */ + { HCBT_KEYSKIPPED, hook|wparam|lparam|optional, VK_ESCAPE, 0x10000001 }, /* XP */ + { WM_CAPTURECHANGED, sent|defwinproc|wparam|lparam, 0, 0 }, + { WM_MENUSELECT, sent|defwinproc|wparam|lparam, 0xffff0000, 0 }, + { WM_EXITMENULOOP, sent|defwinproc|wparam|lparam, 0, 0 }, + { HCBT_KEYSKIPPED, hook|wparam|lparam|optional, VK_ESCAPE, 0xc0000001 }, /* XP */ + { WM_KEYUP, wparam|lparam, VK_ESCAPE, 0xc0000001 }, + { WM_KEYUP, sent|wparam|lparam, VK_ESCAPE, 0xc0000001 }, + { 0 } +};
static void pump_msg_loop(HWND hwnd, HACCEL hAccel) { @@ -7122,6 +7148,16 @@ keybd_event(VK_F10, 0, KEYEVENTF_KEYUP, 0); pump_msg_loop(hwnd, 0); ok_sequence(WmVkF10Seq, "VK_F10 press/release", TRUE); + + trace("testing SHIFT+F10 press/release\n"); + keybd_event(VK_SHIFT, 0, 0, 0); + keybd_event(VK_F10, 0, 0, 0); + keybd_event(VK_F10, 0, KEYEVENTF_KEYUP, 0); + keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0); + keybd_event(VK_ESCAPE, 0, 0, 0); + keybd_event(VK_ESCAPE, 0, KEYEVENTF_KEYUP, 0); + pump_msg_loop(hwnd, 0); + ok_sequence(WmShiftF10Seq, "SHIFT+F10 press/release", TRUE);
trace("testing Shift+MouseButton press/release\n"); /* first, move mouse pointer inside of the window client area */
Modified: vendor/wine/dlls/user32/current/tests/win.c URL: http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/tests/win... ============================================================================== --- vendor/wine/dlls/user32/current/tests/win.c [iso-8859-1] (original) +++ vendor/wine/dlls/user32/current/tests/win.c [iso-8859-1] Fri Jan 22 23:30:22 2010 @@ -52,6 +52,7 @@ static BOOL (WINAPI *pGetMonitorInfoA)(HMONITOR,LPMONITORINFO); static HMONITOR (WINAPI *pMonitorFromPoint)(POINT,DWORD); static int (WINAPI *pGetWindowRgnBox)(HWND,LPRECT); +static BOOL (WINAPI *pGetGUIThreadInfo)(DWORD, GUITHREADINFO*);
static BOOL test_lbuttondown_flag; static HWND hwndMessage; @@ -2695,6 +2696,114 @@ ok (ret, "releasecapture did not return TRUE.\n"); ret = ReleaseCapture(); ok (ret, "releasecapture did not return TRUE after second try.\n"); +} + +static LRESULT CALLBACK test_capture_4_proc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) +{ + GUITHREADINFO gti; + HWND cap_wnd, cap_wnd2, set_cap_wnd; + BOOL status; + switch (msg) + { + case WM_CAPTURECHANGED: + + /* now try to release capture from menu. this should fail */ + if (pGetGUIThreadInfo) + { + memset(>i, 0, sizeof(GUITHREADINFO)); + gti.cbSize = sizeof(GUITHREADINFO); + status = pGetGUIThreadInfo(GetCurrentThreadId(), >i); + ok(status, "GetGUIThreadInfo() failed!\n"); + ok(gti.flags & GUI_INMENUMODE, "Thread info incorrect (flags=%08X)!\n", gti.flags); + } + cap_wnd = GetCapture(); + + /* check that re-setting the capture for the menu fails */ + set_cap_wnd = SetCapture(cap_wnd); + ok(!set_cap_wnd, "SetCapture should have failed!\n"); + + /* check that SetCapture fails for another window and that it does not touch the error code */ + set_cap_wnd = SetCapture(hWnd); + ok(!set_cap_wnd, "ReleaseCapture should have failed!\n"); + + /* check that ReleaseCapture fails and does not touch the error code */ + status = ReleaseCapture(); + ok(!status, "ReleaseCapture should have failed!\n"); + + /* check that thread info did not change */ + if (pGetGUIThreadInfo) + { + memset(>i, 0, sizeof(GUITHREADINFO)); + gti.cbSize = sizeof(GUITHREADINFO); + status = pGetGUIThreadInfo(GetCurrentThreadId(), >i); + ok(status, "GetGUIThreadInfo() failed!\n"); + ok(gti.flags & GUI_INMENUMODE, "Thread info incorrect (flags=%08X)!\n", gti.flags); + } + + /* verify that no capture change took place */ + cap_wnd2 = GetCapture(); + ok(cap_wnd2 == cap_wnd, "Capture changed!\n"); + + /* we are done. kill the window */ + DestroyWindow(hWnd); + break; + + default: + return( DefWindowProcA( hWnd, msg, wParam, lParam ) ); + } + return 0; +} + +/* Test that no-one can mess around with the current capture while a menu is open */ +static void test_capture_4(void) +{ + BOOL ret; + HMENU hmenu; + HWND hwnd; + WNDCLASSA wclass; + HINSTANCE hInstance = GetModuleHandleA( NULL ); + + if (!pGetGUIThreadInfo) + win_skip("GetGUIThreadInfo is not available\n"); + + wclass.lpszClassName = "TestCapture4Class"; + wclass.style = CS_HREDRAW | CS_VREDRAW; + wclass.lpfnWndProc = test_capture_4_proc; + wclass.hInstance = hInstance; + wclass.hIcon = LoadIconA( 0, IDI_APPLICATION ); + wclass.hCursor = LoadCursorA( NULL, IDC_ARROW ); + wclass.hbrBackground = (HBRUSH)( COLOR_WINDOW + 1 ); + wclass.lpszMenuName = 0; + wclass.cbClsExtra = 0; + wclass.cbWndExtra = 0; + assert (RegisterClassA( &wclass )); + assert (hwnd = CreateWindowA( wclass.lpszClassName, "MenuTest", + WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, + 400, 200, NULL, NULL, hInstance, NULL) ); + ok(hwnd != NULL, "CreateWindowEx failed with error %d\n", GetLastError()); + if (!hwnd) return; + hmenu = CreatePopupMenu(); + + ret = AppendMenuA( hmenu, MF_STRING, 1, "winetest2"); + ok( ret, "AppendMenuA has failed!\n"); + + /* set main window to have initial capture */ + SetCapture(hwnd); + + if (!GetWindowLongW(GetDesktopWindow(), GWL_STYLE)) + { + win_skip("TrackPopupMenu test crashes on Win9x/WinMe\n"); + } + else + { + /* create popup (it will self-destruct) */ + ret = TrackPopupMenu(hmenu, TPM_RETURNCMD, 100, 100, 0, hwnd, NULL); + ok( ret == 0, "TrackPopupMenu returned %d expected zero\n", ret); + } + + /* clean up */ + DestroyMenu(hmenu); + DestroyWindow(hwnd); }
/* PeekMessage wrapper that ignores the messages we don't care about */ @@ -5790,6 +5899,7 @@ pGetMonitorInfoA = (void *)GetProcAddress( user32, "GetMonitorInfoA" ); pMonitorFromPoint = (void *)GetProcAddress( user32, "MonitorFromPoint" ); pGetWindowRgnBox = (void *)GetProcAddress( user32, "GetWindowRgnBox" ); + pGetGUIThreadInfo = (void *)GetProcAddress( user32, "GetGUIThreadInfo" );
if (!RegisterWindowClasses()) assert(0);
@@ -5821,6 +5931,7 @@ test_capture_1(); test_capture_2(); test_capture_3(hwndMain, hwndMain2); + test_capture_4();
test_CreateWindow(); test_parent_owner();
Modified: vendor/wine/dlls/winex11.drv/current/keyboard.c URL: http://svn.reactos.org/svn/reactos/vendor/wine/dlls/winex11.drv/current/keyb... ============================================================================== --- vendor/wine/dlls/winex11.drv/current/keyboard.c [iso-8859-1] (original) +++ vendor/wine/dlls/winex11.drv/current/keyboard.c [iso-8859-1] Fri Jan 22 23:30:22 2010 @@ -1140,6 +1140,11 @@ * depending on the NumLock state */ return nonchar_key_vkey[keysym & 0xFF];
+ /* Pressing the Pause/Break key alone produces VK_PAUSE vkey, while + * pressing Ctrl+Pause/Break produces VK_CANCEL. */ + if ((e->state & ControlMask) && (keysym == XK_Break)) + return VK_CANCEL; + TRACE_(key)("e->keycode = %x\n", e->keycode);
return keyc2vkey[e->keycode];
Modified: vendor/wine/dlls/winex11.drv/current/systray.c URL: http://svn.reactos.org/svn/reactos/vendor/wine/dlls/winex11.drv/current/syst... ============================================================================== --- vendor/wine/dlls/winex11.drv/current/systray.c [iso-8859-1] (original) +++ vendor/wine/dlls/winex11.drv/current/systray.c [iso-8859-1] Fri Jan 22 23:30:22 2010 @@ -344,7 +344,7 @@ if (icon->window) { struct x11drv_win_data *data = X11DRV_get_win_data( icon->window ); - if (data) XClearArea( gdi_display, data->client_window, 0, 0, 0, 0, True ); + if (data) XClearArea( thread_display(), data->client_window, 0, 0, 0, 0, True ); } }
Modified: vendor/wine/server/current/change.c URL: http://svn.reactos.org/svn/reactos/vendor/wine/server/current/change.c?rev=4... ============================================================================== --- vendor/wine/server/current/change.c [iso-8859-1] (original) +++ vendor/wine/server/current/change.c [iso-8859-1] Fri Jan 22 23:30:22 2010 @@ -451,8 +451,8 @@ char *name; /* basename name of the inode */ };
-struct list inode_hash[ HASH_SIZE ]; -struct list wd_hash[ HASH_SIZE ]; +static struct list inode_hash[ HASH_SIZE ]; +static struct list wd_hash[ HASH_SIZE ];
static int inotify_add_dir( char *path, unsigned int filter );
Modified: vendor/wine/server/current/main.c URL: http://svn.reactos.org/svn/reactos/vendor/wine/server/current/main.c?rev=452... ============================================================================== --- vendor/wine/server/current/main.c [iso-8859-1] (original) +++ vendor/wine/server/current/main.c [iso-8859-1] Fri Jan 22 23:30:22 2010 @@ -65,14 +65,14 @@
static struct option long_options[] = { - {"debug", 2, 0, 'd'}, - {"foreground", 0, 0, 'f'}, - {"help", 0, 0, 'h'}, - {"kill", 2, 0, 'k'}, - {"persistent", 2, 0, 'p'}, - {"version", 0, 0, 'v'}, - {"wait", 0, 0, 'w'}, - { NULL, 0, 0, 0} + {"debug", 2, NULL, 'd'}, + {"foreground", 0, NULL, 'f'}, + {"help", 0, NULL, 'h'}, + {"kill", 2, NULL, 'k'}, + {"persistent", 2, NULL, 'p'}, + {"version", 0, NULL, 'v'}, + {"wait", 0, NULL, 'w'}, + { NULL, 0, NULL, 0} };
server_argv0 = argv[0];
Modified: vendor/wine/server/current/queue.c URL: http://svn.reactos.org/svn/reactos/vendor/wine/server/current/queue.c?rev=45... ============================================================================== --- vendor/wine/server/current/queue.c [iso-8859-1] (original) +++ vendor/wine/server/current/queue.c [iso-8859-1] Fri Jan 22 23:30:22 2010 @@ -2145,6 +2145,12 @@ { struct thread_input *input = queue->input;
+ /* if in menu mode, reject all requests to change focus, except if the menu bit is set */ + if (input->menu_owner && !(req->flags & CAPTURE_MENU)) + { + set_error(STATUS_ACCESS_DENIED); + return; + } reply->previous = input->capture; input->capture = get_user_full_handle( req->handle ); input->menu_owner = (req->flags & CAPTURE_MENU) ? input->capture : 0;
Modified: vendor/wine/server/current/sock.c URL: http://svn.reactos.org/svn/reactos/vendor/wine/server/current/sock.c?rev=452... ============================================================================== --- vendor/wine/server/current/sock.c [iso-8859-1] (original) +++ vendor/wine/server/current/sock.c [iso-8859-1] Fri Jan 22 23:30:22 2010 @@ -248,13 +248,13 @@ int i; int async_active = 0;
- if ( pollev & (POLLIN|POLLPRI) && async_waiting( sock->read_q )) + if ( pollev & (POLLIN|POLLPRI|POLLERR|POLLHUP) && async_waiting( sock->read_q )) { if (debug_level) fprintf( stderr, "activating read queue for socket %p\n", sock ); async_wake_up( sock->read_q, STATUS_ALERTED ); async_active = 1; } - if ( pollev & POLLOUT && async_waiting( sock->write_q )) + if ( pollev & (POLLOUT|POLLERR|POLLHUP) && async_waiting( sock->write_q )) { if (debug_level) fprintf( stderr, "activating write queue for socket %p\n", sock ); async_wake_up( sock->write_q, STATUS_ALERTED );