Author: fireball
Date: Sat Nov 14 12:11:27 2009
New Revision: 44151
URL:
http://svn.reactos.org/svn/reactos?rev=44151&view=rev
Log:
- Update to Wine-1.1.33.
Removed:
vendor/wine/dlls/user32/current/driver16.c
Modified:
vendor/wine/dlls/gdi32/current/enhmfdrv/graphics.c
vendor/wine/dlls/gdi32/current/tests/metafile.c
vendor/wine/dlls/user32/current/Makefile.in
vendor/wine/dlls/user32/current/dde_misc.c
vendor/wine/dlls/user32/current/defdlg.c
vendor/wine/dlls/user32/current/message.c
vendor/wine/dlls/user32/current/msg16.c
vendor/wine/dlls/user32/current/nonclient.c
vendor/wine/dlls/user32/current/tests/win.c
vendor/wine/dlls/user32/current/user16.c
vendor/wine/dlls/user32/current/user32.spec
vendor/wine/dlls/user32/current/user_main.c
vendor/wine/dlls/user32/current/win.c
vendor/wine/dlls/user32/current/winpos.c
vendor/wine/dlls/winex11.drv/current/bitblt.c
vendor/wine/dlls/winex11.drv/current/dib.c
vendor/wine/dlls/winex11.drv/current/event.c
vendor/wine/dlls/winex11.drv/current/keyboard.c
vendor/wine/dlls/winex11.drv/current/opengl.c
vendor/wine/dlls/winex11.drv/current/window.c
vendor/wine/dlls/winex11.drv/current/x11drv_main.c
vendor/wine/dlls/winex11.drv/current/xfont.c
vendor/wine/dlls/winex11.drv/current/xrender.c
vendor/wine/server/current/fd.c
vendor/wine/server/current/protocol.def
vendor/wine/server/current/request.h
vendor/wine/server/current/trace.c
Modified: vendor/wine/dlls/gdi32/current/enhmfdrv/graphics.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/gdi32/current/enhmfdrv/…
==============================================================================
--- vendor/wine/dlls/gdi32/current/enhmfdrv/graphics.c [iso-8859-1] (original)
+++ vendor/wine/dlls/gdi32/current/enhmfdrv/graphics.c [iso-8859-1] Sat Nov 14 12:11:27
2009
@@ -826,11 +826,10 @@
pemr->rclBounds.bottom = y + textHeight + 1;
}
}
+ EMFDRV_UpdateBBox( dev, &pemr->rclBounds );
no_bounds:
ret = EMFDRV_WriteRecord( dev, &pemr->emr );
- if(ret)
- EMFDRV_UpdateBBox( dev, &pemr->rclBounds );
HeapFree( GetProcessHeap(), 0, pemr );
return ret;
}
Modified: vendor/wine/dlls/gdi32/current/tests/metafile.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/gdi32/current/tests/met…
==============================================================================
--- vendor/wine/dlls/gdi32/current/tests/metafile.c [iso-8859-1] (original)
+++ vendor/wine/dlls/gdi32/current/tests/metafile.c [iso-8859-1] Sat Nov 14 12:11:27 2009
@@ -1953,8 +1953,11 @@
SetRect(&rc_sclip, 100, 100, GetSystemMetrics(SM_CXSCREEN),
GetSystemMetrics(SM_CYSCREEN));
hrgn = CreateRectRgn(rc_sclip.left, rc_sclip.top, rc_sclip.right, rc_sclip.bottom);
SelectClipRgn(hdc, hrgn);
- GetClipBox(hdc, &rc_res);
- todo_wine ok(EqualRect(&rc_res, &rc_sclip),
+ ret = GetClipBox(hdc, &rc_res);
+todo_wine
+ ok(ret == SIMPLEREGION, "got %d\n", ret);
+ if(ret == SIMPLEREGION)
+ ok(EqualRect(&rc_res, &rc_sclip),
"expected rc_res (%d, %d) - (%d, %d), got (%d, %d) - (%d,
%d)\n",
rc_sclip.left, rc_sclip.top, rc_sclip.right, rc_sclip.bottom,
rc_res.left, rc_res.top, rc_res.right, rc_res.bottom);
Modified: vendor/wine/dlls/user32/current/Makefile.in
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/Makefile…
==============================================================================
--- vendor/wine/dlls/user32/current/Makefile.in [iso-8859-1] (original)
+++ vendor/wine/dlls/user32/current/Makefile.in [iso-8859-1] Sat Nov 14 12:11:27 2009
@@ -25,9 +25,7 @@
defwnd.c \
desktop.c \
dialog.c \
- dialog16.c \
driver.c \
- driver16.c \
edit.c \
exticon.c \
focus.c \
@@ -40,7 +38,6 @@
menu.c \
message.c \
misc.c \
- msg16.c \
msgbox.c \
nonclient.c \
painting.c \
@@ -63,7 +60,9 @@
C_SRCS16 = \
bidi16.c \
comm16.c \
+ dialog16.c \
hook16.c \
+ msg16.c \
network.c \
user16.c \
wnd16.c
Modified: vendor/wine/dlls/user32/current/dde_misc.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/dde_misc…
==============================================================================
--- vendor/wine/dlls/user32/current/dde_misc.c [iso-8859-1] (original)
+++ vendor/wine/dlls/user32/current/dde_misc.c [iso-8859-1] Sat Nov 14 12:11:27 2009
@@ -380,6 +380,7 @@
pInstance->nodeList = NULL; /* node will be added later */
pInstance->monitorFlags = afCmd & MF_MASK;
pInstance->wStatus = 0;
+ pInstance->lastError = DMLERR_NO_ERROR;
pInstance->servers = NULL;
pInstance->convs[0] = NULL;
pInstance->convs[1] = NULL;
Modified: vendor/wine/dlls/user32/current/defdlg.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/defdlg.c…
==============================================================================
--- vendor/wine/dlls/user32/current/defdlg.c [iso-8859-1] (original)
+++ vendor/wine/dlls/user32/current/defdlg.c [iso-8859-1] Sat Nov 14 12:11:27 2009
@@ -23,7 +23,7 @@
#include "windef.h"
#include "winbase.h"
#include "wingdi.h"
-#include "wine/winuser16.h"
+#include "winuser.h"
#include "controls.h"
#include "win.h"
#include "user_private.h"
@@ -317,22 +317,6 @@
}
/***********************************************************************
- * DEFDLG_Epilog
- */
-static LRESULT DEFDLG_Epilog(HWND hwnd, UINT msg, BOOL fResult)
-{
- /* see SDK 3.1 */
-
- if ((msg >= WM_CTLCOLORMSGBOX && msg <= WM_CTLCOLORSTATIC) ||
- msg == WM_CTLCOLOR || msg == WM_COMPAREITEM ||
- msg == WM_VKEYTOITEM || msg == WM_CHARTOITEM ||
- msg == WM_QUERYDRAGICON || msg == WM_INITDIALOG)
- return fResult;
-
- return GetWindowLongPtrW( hwnd, DWLP_MSGRESULT );
-}
-
-/***********************************************************************
* DIALOG_get_info
*
* Get the DIALOGINFO structure of a window, allocating it if needed
@@ -374,66 +358,13 @@
}
/***********************************************************************
- * DefDlgProc (USER.308)
- */
-LRESULT WINAPI DefDlgProc16( HWND16 hwnd, UINT16 msg, WPARAM16 wParam,
- LPARAM lParam )
-{
- DIALOGINFO *dlgInfo;
- DLGPROC16 dlgproc;
- HWND hwnd32 = WIN_Handle32( hwnd );
- BOOL result = FALSE;
-
- /* Perform DIALOGINFO initialization if not done */
- if(!(dlgInfo = DIALOG_get_info(hwnd32, TRUE))) return 0;
-
- SetWindowLongPtrW( hwnd32, DWLP_MSGRESULT, 0 );
-
- if ((dlgproc = (DLGPROC16)DEFDLG_GetDlgProc( hwnd32 ))) /* Call dialog procedure */
- result = WINPROC_CallDlgProc16( dlgproc, hwnd, msg, wParam, lParam );
-
- if (!result && IsWindow(hwnd32))
- {
- /* callback didn't process this message */
-
- switch(msg)
- {
- case WM_ERASEBKGND:
- case WM_SHOWWINDOW:
- case WM_ACTIVATE:
- case WM_SETFOCUS:
- case DM_SETDEFID:
- case DM_GETDEFID:
- case WM_NEXTDLGCTL:
- case WM_GETFONT:
- case WM_CLOSE:
- case WM_NCDESTROY:
- case WM_ENTERMENULOOP:
- case WM_LBUTTONDOWN:
- case WM_NCLBUTTONDOWN:
- return DEFDLG_Proc( hwnd32, msg, (WPARAM)wParam, lParam, dlgInfo );
- case WM_INITDIALOG:
- case WM_VKEYTOITEM:
- case WM_COMPAREITEM:
- case WM_CHARTOITEM:
- break;
-
- default:
- return DefWindowProc16( hwnd, msg, wParam, lParam );
- }
- }
- return DEFDLG_Epilog( hwnd32, msg, result);
-}
-
-
-/***********************************************************************
* DefDlgProcA (USER32.@)
*/
LRESULT WINAPI DefDlgProcA( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
DIALOGINFO *dlgInfo;
DLGPROC dlgproc;
- BOOL result = FALSE;
+ LRESULT result = 0;
/* Perform DIALOGINFO initialization if not done */
if(!(dlgInfo = DIALOG_get_info( hwnd, TRUE ))) return 0;
@@ -473,7 +404,14 @@
return DefWindowProcA( hwnd, msg, wParam, lParam );
}
}
- return DEFDLG_Epilog(hwnd, msg, result);
+
+ if ((msg >= WM_CTLCOLORMSGBOX && msg <= WM_CTLCOLORSTATIC) ||
+ msg == WM_CTLCOLOR || msg == WM_COMPAREITEM ||
+ msg == WM_VKEYTOITEM || msg == WM_CHARTOITEM ||
+ msg == WM_QUERYDRAGICON || msg == WM_INITDIALOG)
+ return result;
+
+ return GetWindowLongPtrW( hwnd, DWLP_MSGRESULT );
}
@@ -483,8 +421,8 @@
LRESULT WINAPI DefDlgProcW( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
DIALOGINFO *dlgInfo;
- BOOL result = FALSE;
DLGPROC dlgproc;
+ LRESULT result = 0;
/* Perform DIALOGINFO initialization if not done */
if(!(dlgInfo = DIALOG_get_info( hwnd, TRUE ))) return 0;
@@ -524,5 +462,12 @@
return DefWindowProcW( hwnd, msg, wParam, lParam );
}
}
- return DEFDLG_Epilog(hwnd, msg, result);
-}
+
+ if ((msg >= WM_CTLCOLORMSGBOX && msg <= WM_CTLCOLORSTATIC) ||
+ msg == WM_CTLCOLOR || msg == WM_COMPAREITEM ||
+ msg == WM_VKEYTOITEM || msg == WM_CHARTOITEM ||
+ msg == WM_QUERYDRAGICON || msg == WM_INITDIALOG)
+ return result;
+
+ return GetWindowLongPtrW( hwnd, DWLP_MSGRESULT );
+}
Removed: vendor/wine/dlls/user32/current/driver16.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/driver16…
==============================================================================
--- vendor/wine/dlls/user32/current/driver16.c [iso-8859-1] (original)
+++ vendor/wine/dlls/user32/current/driver16.c (removed)
@@ -1,440 +1,0 @@
-/*
- * WINE Drivers functions
- *
- * Copyright 1994 Martin Ayotte
- * Copyright 1998 Marcus Meissner
- * Copyright 1999,2000 Eric Pouech
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- * TODO:
- * - LoadModule count and clean up is not handled correctly (it's not a
- * problem as long as FreeLibrary is not working correctly)
- */
-
-#include <stdarg.h>
-#include <string.h>
-
-#include "windef.h"
-#include "winbase.h"
-#include "wine/winbase16.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "wownt32.h"
-#include "mmddk.h"
-#include "wine/mmsystem16.h"
-#include "wine/debug.h"
-
-WINE_DEFAULT_DEBUG_CHANNEL(driver);
-
-typedef struct tagWINE_DRIVER
-{
- char szAliasName[128];
- /* as usual LPWINE_DRIVER == hDriver32 */
- HDRVR16 hDriver16;
- HMODULE16 hModule16;
- DRIVERPROC16 lpDrvProc;
- DWORD dwDriverID;
- struct tagWINE_DRIVER* lpPrevItem;
- struct tagWINE_DRIVER* lpNextItem;
-} WINE_DRIVER, *LPWINE_DRIVER;
-
-static LPWINE_DRIVER lpDrvItemList = NULL;
-
-
-/**************************************************************************
- * LoadStartupDrivers [internal]
- */
-#if 0
-static void DRIVER_LoadStartupDrivers(void)
-{
- char str[256];
-
- if (GetPrivateProfileStringA("drivers", NULL, "", str,
sizeof(str), "SYSTEM.INI") < 2) {
- ERR("Can't find drivers section in system.ini\n");
- } else {
- HDRVR16 hDrv;
- LPSTR ptr;
-
- for (ptr = str; *ptr; ptr += strlen(ptr) + 1) {
- TRACE("str='%s'\n", ptr);
- hDrv = OpenDriver16(ptr, "drivers", 0L);
- TRACE("hDrv=%04x\n", hDrv);
- }
- TRACE("end of list !\n");
- }
-}
-#endif
-
-/**************************************************************************
- * DRIVER_GetNumberOfModuleRefs [internal]
- *
- * Returns the number of open drivers which share the same module.
- */
-static WORD DRIVER_GetNumberOfModuleRefs(LPWINE_DRIVER lpNewDrv)
-{
- LPWINE_DRIVER lpDrv;
- WORD count = 0;
-
- for (lpDrv = lpDrvItemList; lpDrv; lpDrv = lpDrv->lpNextItem) {
- if (lpDrv->hModule16 == lpNewDrv->hModule16) {
- count++;
- }
- }
- return count;
-}
-
-/**************************************************************************
- * DRIVER_FindFromHDrvr16 [internal]
- *
- * From a hDrvr being 16 bits, returns the WINE internal structure.
- */
-static LPWINE_DRIVER DRIVER_FindFromHDrvr16(HDRVR16 hDrvr)
-{
- LPWINE_DRIVER lpDrv;
-
- for (lpDrv = lpDrvItemList; lpDrv; lpDrv = lpDrv->lpNextItem) {
- if (lpDrv->hDriver16 == hDrvr) {
- break;
- }
- }
- return lpDrv;
-}
-
-/**************************************************************************
- * DRIVER_SendMessage [internal]
- */
-static inline LRESULT DRIVER_SendMessage(LPWINE_DRIVER lpDrv, UINT16 msg,
- LPARAM lParam1, LPARAM lParam2)
-{
- WORD args[8];
- DWORD ret;
-
- TRACE("Before CallDriverProc proc=%p driverID=%08x wMsg=%04x p1=%08lx
p2=%08lx\n",
- lpDrv->lpDrvProc, lpDrv->dwDriverID, msg, lParam1, lParam2);
-
- args[7] = HIWORD(lpDrv->dwDriverID);
- args[6] = LOWORD(lpDrv->dwDriverID);
- args[5] = lpDrv->hDriver16;
- args[4] = msg;
- args[3] = HIWORD(lParam1);
- args[2] = LOWORD(lParam1);
- args[1] = HIWORD(lParam2);
- args[0] = LOWORD(lParam2);
- WOWCallback16Ex( (DWORD)lpDrv->lpDrvProc, WCB16_PASCAL, sizeof(args), args,
&ret );
- return ret;
-}
-
-/**************************************************************************
- * SendDriverMessage (USER.251)
- */
-LRESULT WINAPI SendDriverMessage16(HDRVR16 hDriver, UINT16 msg, LPARAM lParam1,
- LPARAM lParam2)
-{
- LPWINE_DRIVER lpDrv;
- LRESULT retval = 0;
-
- TRACE("(%04x, %04X, %08lX, %08lX)\n", hDriver, msg, lParam1, lParam2);
-
- if ((lpDrv = DRIVER_FindFromHDrvr16(hDriver)) != NULL) {
- retval = DRIVER_SendMessage(lpDrv, msg, lParam1, lParam2);
- } else {
- WARN("Bad driver handle %u\n", hDriver);
- }
-
- TRACE("retval = %ld\n", retval);
- return retval;
-}
-
-/**************************************************************************
- * DRIVER_RemoveFromList [internal]
- *
- * Generates all the logic to handle driver closure / deletion
- * Removes a driver struct to the list of open drivers.
- */
-static BOOL DRIVER_RemoveFromList(LPWINE_DRIVER lpDrv)
-{
- lpDrv->dwDriverID = 0;
- if (DRIVER_GetNumberOfModuleRefs(lpDrv) == 1) {
- DRIVER_SendMessage(lpDrv, DRV_DISABLE, 0L, 0L);
- DRIVER_SendMessage(lpDrv, DRV_FREE, 0L, 0L);
- }
-
- if (lpDrv->lpPrevItem)
- lpDrv->lpPrevItem->lpNextItem = lpDrv->lpNextItem;
- else
- lpDrvItemList = lpDrv->lpNextItem;
- if (lpDrv->lpNextItem)
- lpDrv->lpNextItem->lpPrevItem = lpDrv->lpPrevItem;
-
- return TRUE;
-}
-
-/**************************************************************************
- * DRIVER_AddToList [internal]
- *
- * Adds a driver struct to the list of open drivers.
- * Generates all the logic to handle driver creation / open.
- */
-static BOOL DRIVER_AddToList(LPWINE_DRIVER lpNewDrv, LPARAM lParam1, LPARAM lParam2)
-{
- /* First driver to be loaded for this module, need to load correctly the module */
- if (DRIVER_GetNumberOfModuleRefs(lpNewDrv) == 0) {
- if (DRIVER_SendMessage(lpNewDrv, DRV_LOAD, 0L, 0L) != DRV_SUCCESS) {
- TRACE("DRV_LOAD failed on driver %p\n", lpNewDrv);
- return FALSE;
- }
- /* returned value is not checked */
- DRIVER_SendMessage(lpNewDrv, DRV_ENABLE, 0L, 0L);
- }
-
- lpNewDrv->lpNextItem = NULL;
- if (lpDrvItemList == NULL) {
- lpDrvItemList = lpNewDrv;
- lpNewDrv->lpPrevItem = NULL;
- } else {
- LPWINE_DRIVER lpDrv = lpDrvItemList; /* find end of list */
- while (lpDrv->lpNextItem != NULL)
- lpDrv = lpDrv->lpNextItem;
-
- lpDrv->lpNextItem = lpNewDrv;
- lpNewDrv->lpPrevItem = lpDrv;
- }
- /* Now just open a new instance of a driver on this module */
- lpNewDrv->dwDriverID = DRIVER_SendMessage(lpNewDrv, DRV_OPEN, lParam1, lParam2);
-
- if (lpNewDrv->dwDriverID == 0) {
- TRACE("DRV_OPEN failed on driver %p\n", lpNewDrv);
- DRIVER_RemoveFromList(lpNewDrv);
- return FALSE;
- }
-
- return TRUE;
-}
-
-/**************************************************************************
- * DRIVER_TryOpenDriver16 [internal]
- *
- * Tries to load a 16 bit driver whose DLL's (module) name is lpFileName.
- */
-static LPWINE_DRIVER DRIVER_TryOpenDriver16(LPCSTR lpFileName, LPARAM lParam2)
-{
- static WORD DRIVER_hDrvr16Counter /* = 0 */;
- LPWINE_DRIVER lpDrv = NULL;
- HMODULE16 hModule;
- DRIVERPROC16 lpProc;
- LPCSTR lpSFN;
- LPSTR ptr;
-
- TRACE("('%s', %08lX);\n", lpFileName, lParam2);
-
- if (strlen(lpFileName) < 1) return lpDrv;
-
- if ((lpSFN = strrchr(lpFileName, '\\')) == NULL)
- lpSFN = lpFileName;
- else
- lpSFN++;
- if ((ptr = strchr(lpFileName, ' ')) != NULL) {
- *ptr++ = '\0';
- while (*ptr == ' ') ptr++;
- if (*ptr == '\0') ptr = NULL;
- }
-
- if ((hModule = LoadLibrary16(lpFileName)) < 32) goto exit;
- if ((lpProc = (DRIVERPROC16)GetProcAddress16(hModule, "DRIVERPROC")) ==
NULL)
- goto exit;
-
- if ((lpDrv = HeapAlloc(GetProcessHeap(), 0, sizeof(WINE_DRIVER))) == NULL)
- goto exit;
-
- lpDrv->dwDriverID = 0;
- while (DRIVER_FindFromHDrvr16(++DRIVER_hDrvr16Counter));
- lpDrv->hDriver16 = DRIVER_hDrvr16Counter;
- lstrcpynA(lpDrv->szAliasName, lpSFN, sizeof(lpDrv->szAliasName));
- lpDrv->hModule16 = hModule;
- lpDrv->lpDrvProc = lpProc;
-
- if (!DRIVER_AddToList(lpDrv, (LPARAM)ptr, lParam2)) goto exit;
-
- return lpDrv;
- exit:
- TRACE("Unable to load 16 bit module (%s): %04x\n", lpFileName, hModule);
- if (hModule >= 32) FreeLibrary16(hModule);
- HeapFree(GetProcessHeap(), 0, lpDrv);
- return NULL;
-}
-
-/**************************************************************************
- * OpenDriver (USER.252)
- */
-HDRVR16 WINAPI OpenDriver16(LPCSTR lpDriverName, LPCSTR lpSectionName, LPARAM lParam2)
-{
- LPWINE_DRIVER lpDrv = NULL;
- char drvName[128];
-
- TRACE("(%s, %s, %08lX);\n", debugstr_a(lpDriverName),
debugstr_a(lpSectionName), lParam2);
-
- if (!lpDriverName || !*lpDriverName) return 0;
-
- if (lpSectionName == NULL) {
- strcpy(drvName, lpDriverName);
-
- if ((lpDrv = DRIVER_TryOpenDriver16(drvName, lParam2)))
- goto the_end;
- /* in case hDriver is NULL, search in Drivers section */
- lpSectionName = "Drivers";
- }
- if (GetPrivateProfileStringA(lpSectionName, lpDriverName, "",
- drvName, sizeof(drvName), "SYSTEM.INI") > 0) {
- lpDrv = DRIVER_TryOpenDriver16(drvName, lParam2);
- }
- if (!lpDrv) {
- TRACE("Failed to open driver %s from system.ini file, section %s\n",
debugstr_a(lpDriverName), debugstr_a(lpSectionName));
- return 0;
- }
- the_end:
- TRACE("=> %04x / %p\n", lpDrv->hDriver16, lpDrv);
- return lpDrv->hDriver16;
-}
-
-/**************************************************************************
- * CloseDriver (USER.253)
- */
-LRESULT WINAPI CloseDriver16(HDRVR16 hDrvr, LPARAM lParam1, LPARAM lParam2)
-{
- LPWINE_DRIVER lpDrv;
-
- TRACE("(%04x, %08lX, %08lX);\n", hDrvr, lParam1, lParam2);
-
- if ((lpDrv = DRIVER_FindFromHDrvr16(hDrvr)) != NULL) {
- DRIVER_SendMessage(lpDrv, DRV_CLOSE, lParam1, lParam2);
-
- if (DRIVER_RemoveFromList(lpDrv)) {
- HeapFree(GetProcessHeap(), 0, lpDrv);
- return TRUE;
- }
- }
- WARN("Failed to close driver\n");
- return FALSE;
-}
-
-/**************************************************************************
- * GetDriverModuleHandle (USER.254)
- */
-HMODULE16 WINAPI GetDriverModuleHandle16(HDRVR16 hDrvr)
-{
- LPWINE_DRIVER lpDrv;
- HMODULE16 hModule = 0;
-
- TRACE("(%04x);\n", hDrvr);
-
- if ((lpDrv = DRIVER_FindFromHDrvr16(hDrvr)) != NULL) {
- hModule = lpDrv->hModule16;
- }
- TRACE("=> %04x\n", hModule);
- return hModule;
-}
-
-/**************************************************************************
- * DefDriverProc (USER.255)
- */
-LRESULT WINAPI DefDriverProc16(DWORD dwDevID, HDRVR16 hDriv, UINT16 wMsg,
- LPARAM lParam1, LPARAM lParam2)
-{
- TRACE("devID=0x%08x hDrv=0x%04x wMsg=%04x lP1=0x%08lx lP2=0x%08lx\n",
- dwDevID, hDriv, wMsg, lParam1, lParam2);
-
- switch(wMsg) {
- case DRV_LOAD:
- case DRV_FREE:
- case DRV_ENABLE:
- case DRV_DISABLE:
- return (LRESULT)1L;
- case DRV_OPEN:
- case DRV_CLOSE:
- case DRV_QUERYCONFIGURE:
- return (LRESULT)0L;
- case DRV_CONFIGURE:
- MessageBoxA(0, "Driver isn't configurable !", "Wine Driver",
MB_OK);
- return (LRESULT)0L;
- case DRV_INSTALL:
- case DRV_REMOVE:
- return DRV_SUCCESS;
- default:
- return (LRESULT)0L;
- }
-}
-
-/**************************************************************************
- * GetDriverInfo (USER.256)
- */
-BOOL16 WINAPI GetDriverInfo16(HDRVR16 hDrvr, LPDRIVERINFOSTRUCT16 lpDrvInfo)
-{
- LPWINE_DRIVER lpDrv;
- BOOL16 ret = FALSE;
-
- TRACE("(%04x, %p);\n", hDrvr, lpDrvInfo);
-
- if (lpDrvInfo == NULL || lpDrvInfo->length != sizeof(DRIVERINFOSTRUCT16))
- return FALSE;
-
- if ((lpDrv = DRIVER_FindFromHDrvr16(hDrvr)) != NULL) {
- lpDrvInfo->hDriver = lpDrv->hDriver16;
- lpDrvInfo->hModule = lpDrv->hModule16;
- lstrcpynA(lpDrvInfo->szAliasName, lpDrv->szAliasName,
sizeof(lpDrvInfo->szAliasName));
- ret = TRUE;
- }
-
- return ret;
-}
-
-/**************************************************************************
- * GetNextDriver (USER.257)
- */
-HDRVR16 WINAPI GetNextDriver16(HDRVR16 hDrvr, DWORD dwFlags)
-{
- HDRVR16 hRetDrv = 0;
- LPWINE_DRIVER lpDrv;
-
- TRACE("(%04x, %08X);\n", hDrvr, dwFlags);
-
- if (hDrvr == 0) {
- if (lpDrvItemList == NULL) {
- FIXME("drivers list empty !\n");
- /* FIXME: code was using DRIVER_LoadStartupDrivers(); before ?
- * I (EPP) don't quite understand this
- */
- if (lpDrvItemList == NULL)
- return 0;
- }
- lpDrv = lpDrvItemList;
- if (dwFlags & GND_REVERSE) {
- while (lpDrv->lpNextItem)
- lpDrv = lpDrv->lpNextItem;
- }
- } else {
- if ((lpDrv = DRIVER_FindFromHDrvr16(hDrvr)) != NULL) {
- if (dwFlags & GND_REVERSE) {
- lpDrv = (lpDrv->lpPrevItem) ? lpDrv->lpPrevItem : NULL;
- } else {
- lpDrv = (lpDrv->lpNextItem) ? lpDrv->lpNextItem : NULL;
- }
- }
- }
-
- hRetDrv = (lpDrv) ? lpDrv->hDriver16 : 0;
- TRACE("return %04x !\n", hRetDrv);
- return hRetDrv;
-}
Modified: vendor/wine/dlls/user32/current/message.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/message.…
==============================================================================
--- vendor/wine/dlls/user32/current/message.c [iso-8859-1] (original)
+++ vendor/wine/dlls/user32/current/message.c [iso-8859-1] Sat Nov 14 12:11:27 2009
@@ -3365,28 +3365,6 @@
/***********************************************************************
- * UserYield (USER.332)
- */
-void WINAPI UserYield16(void)
-{
- DWORD count;
-
- /* Handle sent messages */
- process_sent_messages();
-
- /* Yield */
- ReleaseThunkLock(&count);
-
- if (count)
- {
- RestoreThunkLock(count);
- /* Handle sent messages again */
- process_sent_messages();
- }
-}
-
-
-/***********************************************************************
* RegisterWindowMessageA (USER32.@)
* RegisterWindowMessage (USER.118)
*/
Modified: vendor/wine/dlls/user32/current/msg16.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/msg16.c?…
==============================================================================
--- vendor/wine/dlls/user32/current/msg16.c [iso-8859-1] (original)
+++ vendor/wine/dlls/user32/current/msg16.c [iso-8859-1] Sat Nov 14 12:11:27 2009
@@ -77,6 +77,13 @@
return 0;
}
+static LRESULT defdlg_proc_callback( HWND hwnd, UINT msg, WPARAM wp, LPARAM lp,
+ LRESULT *result, void *arg )
+{
+ *result = DefDlgProcA( hwnd, msg, wp, lp );
+ return *result;
+}
+
/***********************************************************************
* SendMessage (USER.111)
@@ -270,6 +277,17 @@
/***********************************************************************
+ * DefDlgProc (USER.308)
+ */
+LRESULT WINAPI DefDlgProc16( HWND16 hwnd, UINT16 msg, WPARAM16 wParam, LPARAM lParam )
+{
+ LRESULT result;
+ WINPROC_CallProc16To32A( defdlg_proc_callback, hwnd, msg, wParam, lParam,
&result, 0 );
+ return result;
+}
+
+
+/***********************************************************************
* PeekMessage (USER.109)
*/
BOOL16 WINAPI PeekMessage16( MSG16 *msg, HWND16 hwnd,
@@ -506,6 +524,16 @@
/***********************************************************************
+ * UserYield (USER.332)
+ */
+void WINAPI UserYield16(void)
+{
+ MSG msg;
+ PeekMessageW( &msg, 0, 0, 0, PM_REMOVE | PM_QS_SENDMESSAGE );
+}
+
+
+/***********************************************************************
* GetQueueStatus (USER.334)
*/
DWORD WINAPI GetQueueStatus16( UINT16 flags )
Modified: vendor/wine/dlls/user32/current/nonclient.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/nonclien…
==============================================================================
--- vendor/wine/dlls/user32/current/nonclient.c [iso-8859-1] (original)
+++ vendor/wine/dlls/user32/current/nonclient.c [iso-8859-1] Sat Nov 14 12:11:27 2009
@@ -1630,6 +1630,11 @@
TRACE("(%p %p)\n", hwnd, tbi);
+ if(!tbi) {
+ SetLastError(ERROR_NOACCESS);
+ return FALSE;
+ }
+
if(tbi->cbSize != sizeof(TITLEBARINFO)) {
TRACE("Invalid TITLEBARINFO size: %d\n", tbi->cbSize);
SetLastError(ERROR_INVALID_PARAMETER);
Modified: vendor/wine/dlls/user32/current/tests/win.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/tests/wi…
==============================================================================
--- vendor/wine/dlls/user32/current/tests/win.c [iso-8859-1] (original)
+++ vendor/wine/dlls/user32/current/tests/win.c [iso-8859-1] Sat Nov 14 12:11:27 2009
@@ -2298,7 +2298,7 @@
static void test_SetFocus(HWND hwnd)
{
- HWND child;
+ HWND child, child2;
WNDPROC old_wnd_proc;
/* check if we can set focus to non-visible windows */
@@ -2325,6 +2325,14 @@
ok( !(GetWindowLong(child,GWL_STYLE) & WS_VISIBLE), "Child %p is
visible\n", child );
ok( GetFocus() == hwnd, "Focus should be on parent %p, not %p\n", hwnd,
GetFocus() );
ShowWindow(child, SW_SHOW);
+ child2 = CreateWindowExA(0, "static", NULL, WS_CHILD, 0, 0, 0, 0, child, 0,
0, NULL);
+ assert(child2);
+ ShowWindow(child2, SW_SHOW);
+ SetFocus(child2);
+ ShowWindow(child, SW_HIDE);
+ ok( !(GetWindowLong(child,GWL_STYLE) & WS_VISIBLE), "Child %p is
visible\n", child );
+ ok( GetFocus() == child2, "Focus should be on %p, not %p\n", child2,
GetFocus() );
+ ShowWindow(child, SW_SHOW);
SetFocus(child);
ok( GetFocus() == child, "Focus should be on child %p\n", child );
SetWindowPos(child,0,0,0,0,0,SWP_NOZORDER|SWP_NOMOVE|SWP_NOSIZE|SWP_HIDEWINDOW);
@@ -2368,6 +2376,7 @@
SetWindowLongPtr(hwnd, GWLP_WNDPROC, (LONG_PTR)old_wnd_proc);
+ DestroyWindow( child2 );
DestroyWindow( child );
}
Modified: vendor/wine/dlls/user32/current/user16.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/user16.c…
==============================================================================
--- vendor/wine/dlls/user32/current/user16.c [iso-8859-1] (original)
+++ vendor/wine/dlls/user32/current/user16.c [iso-8859-1] Sat Nov 14 12:11:27 2009
@@ -943,6 +943,80 @@
UINT16 WINAPI GetMenuState16( HMENU16 hMenu, UINT16 wItemID, UINT16 wFlags )
{
return GetMenuState( HMENU_32(hMenu), wItemID, wFlags );
+}
+
+
+/**************************************************************************
+ * SendDriverMessage (USER.251)
+ */
+LRESULT WINAPI SendDriverMessage16(HDRVR16 hDriver, UINT16 msg, LPARAM lParam1,
+ LPARAM lParam2)
+{
+ FIXME("(%04x, %04x, %08lx, %08lx): stub\n", hDriver, msg, lParam1,
lParam2);
+ return 0;
+}
+
+
+/**************************************************************************
+ * OpenDriver (USER.252)
+ */
+HDRVR16 WINAPI OpenDriver16(LPCSTR lpDriverName, LPCSTR lpSectionName, LPARAM lParam2)
+{
+ FIXME( "(%s, %s, %08lx): stub\n", debugstr_a(lpDriverName),
debugstr_a(lpSectionName), lParam2);
+ return 0;
+}
+
+
+/**************************************************************************
+ * CloseDriver (USER.253)
+ */
+LRESULT WINAPI CloseDriver16(HDRVR16 hDrvr, LPARAM lParam1, LPARAM lParam2)
+{
+ FIXME( "(%04x, %08lx, %08lx): stub\n", hDrvr, lParam1, lParam2);
+ return FALSE;
+}
+
+
+/**************************************************************************
+ * GetDriverModuleHandle (USER.254)
+ */
+HMODULE16 WINAPI GetDriverModuleHandle16(HDRVR16 hDrvr)
+{
+ FIXME("(%04x): stub\n", hDrvr);
+ return 0;
+}
+
+
+/**************************************************************************
+ * DefDriverProc (USER.255)
+ */
+LRESULT WINAPI DefDriverProc16(DWORD dwDevID, HDRVR16 hDriv, UINT16 wMsg,
+ LPARAM lParam1, LPARAM lParam2)
+{
+ FIXME( "devID=0x%08x hDrv=0x%04x wMsg=%04x lP1=0x%08lx lP2=0x%08lx:
stub\n",
+ dwDevID, hDriv, wMsg, lParam1, lParam2);
+ return 0;
+}
+
+
+/**************************************************************************
+ * GetDriverInfo (USER.256)
+ */
+struct DRIVERINFOSTRUCT16;
+BOOL16 WINAPI GetDriverInfo16(HDRVR16 hDrvr, struct DRIVERINFOSTRUCT16 *lpDrvInfo)
+{
+ FIXME( "(%04x, %p): stub\n", hDrvr, lpDrvInfo);
+ return FALSE;
+}
+
+
+/**************************************************************************
+ * GetNextDriver (USER.257)
+ */
+HDRVR16 WINAPI GetNextDriver16(HDRVR16 hDrvr, DWORD dwFlags)
+{
+ FIXME( "(%04x, %08x): stub\n", hDrvr, dwFlags);
+ return 0;
}
Modified: vendor/wine/dlls/user32/current/user32.spec
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/user32.s…
==============================================================================
--- vendor/wine/dlls/user32/current/user32.spec [iso-8859-1] (original)
+++ vendor/wine/dlls/user32/current/user32.spec [iso-8859-1] Sat Nov 14 12:11:27 2009
@@ -774,17 +774,7 @@
################################################################
# Wine extensions: Win16 functions that are needed by other dlls
#
-@ stdcall CallWindowProc16(long long long long long)
-@ stdcall CloseDriver16(long long long)
-@ stdcall CreateDialogIndirectParam16(long ptr long long long)
-@ stdcall DefDriverProc16(long long long long long)
-@ stdcall DefWindowProc16(long long long long)
@ stdcall DestroyIcon32(long long)
-@ stdcall DialogBoxIndirectParam16(long long long long long)
-@ stdcall GetDriverModuleHandle16(long)
-@ stdcall OpenDriver16(str str long)
-@ stdcall SendDriverMessage16(long long long long)
-@ stdcall UserYield16()
################################################################
# Wine dll separation hacks, these will go away, don't use them
Modified: vendor/wine/dlls/user32/current/user_main.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/user_mai…
==============================================================================
--- vendor/wine/dlls/user32/current/user_main.c [iso-8859-1] (original)
+++ vendor/wine/dlls/user32/current/user_main.c [iso-8859-1] Sat Nov 14 12:11:27 2009
@@ -354,12 +354,14 @@
static const WCHAR forceW[] = { '
','-','-','f','o','r','c','e',0
};
static const WCHAR shutdownW[] = { '
','-','-','s','h','u','t','d','o','w','n',0
};
+ WCHAR app[MAX_PATH];
WCHAR cmdline[MAX_PATH + 64];
PROCESS_INFORMATION pi;
STARTUPINFOW si;
- GetSystemDirectoryW( cmdline, MAX_PATH );
- lstrcatW( cmdline, winebootW );
+ GetSystemDirectoryW( app, MAX_PATH - sizeof(winebootW)/sizeof(WCHAR) );
+ strcatW( app, winebootW );
+ strcpyW( cmdline, app );
if (flags & EWX_FORCE) lstrcatW( cmdline, killW );
else
@@ -371,7 +373,7 @@
memset( &si, 0, sizeof si );
si.cb = sizeof si;
- if (!CreateProcessW( NULL, cmdline, NULL, NULL, FALSE, DETACHED_PROCESS, NULL, NULL,
&si, &pi ))
+ if (!CreateProcessW( app, cmdline, NULL, NULL, FALSE, DETACHED_PROCESS, NULL, NULL,
&si, &pi ))
{
ERR( "Failed to run %s\n", debugstr_w(cmdline) );
return FALSE;
Modified: vendor/wine/dlls/user32/current/win.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/win.c?re…
==============================================================================
--- vendor/wine/dlls/user32/current/win.c [iso-8859-1] (original)
+++ vendor/wine/dlls/user32/current/win.c [iso-8859-1] Sat Nov 14 12:11:27 2009
@@ -1852,11 +1852,13 @@
if (!GetUserObjectInformationW( GetProcessWindowStation(), UOI_FLAGS,
&flags,
sizeof(flags), NULL ) || (flags.dwFlags &
WSF_VISIBLE))
{
- static const WCHAR command_line[] =
{'\\','e','x','p','l','o','r','e','r','.','e','x','e','
','/','d','e','s','k','t','o','p',0};
+ static const WCHAR explorer[] =
{'\\','e','x','p','l','o','r','e','r','.','e','x','e',0};
+ static const WCHAR args[] = {'
','/','d','e','s','k','t','o','p',0};
STARTUPINFOW si;
PROCESS_INFORMATION pi;
- WCHAR systemdir[MAX_PATH];
- WCHAR cmdline[MAX_PATH + sizeof(command_line)/sizeof(WCHAR)];
+ WCHAR windir[MAX_PATH];
+ WCHAR app[MAX_PATH + sizeof(explorer)/sizeof(WCHAR)];
+ WCHAR cmdline[MAX_PATH + (sizeof(explorer) + sizeof(args))/sizeof(WCHAR)];
memset( &si, 0, sizeof(si) );
si.cb = sizeof(si);
@@ -1865,11 +1867,13 @@
si.hStdOutput = 0;
si.hStdError = GetStdHandle( STD_ERROR_HANDLE );
- GetSystemDirectoryW( systemdir, MAX_PATH );
- lstrcpyW( cmdline, systemdir );
- lstrcatW( cmdline, command_line );
- if (CreateProcessW( NULL, cmdline, NULL, NULL, FALSE, DETACHED_PROCESS,
- NULL, systemdir, &si, &pi ))
+ GetWindowsDirectoryW( windir, MAX_PATH );
+ strcpyW( app, windir );
+ strcatW( app, explorer );
+ strcpyW( cmdline, app );
+ strcatW( cmdline, args );
+ if (CreateProcessW( app, cmdline, NULL, NULL, FALSE, DETACHED_PROCESS,
+ NULL, windir, &si, &pi ))
{
TRACE( "started explorer pid %04x tid %04x\n", pi.dwProcessId,
pi.dwThreadId );
WaitForInputIdle( pi.hProcess, 10000 );
Modified: vendor/wine/dlls/user32/current/winpos.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/winpos.c…
==============================================================================
--- vendor/wine/dlls/user32/current/winpos.c [iso-8859-1] (original)
+++ vendor/wine/dlls/user32/current/winpos.c [iso-8859-1] Sat Nov 14 12:11:27 2009
@@ -1056,7 +1056,7 @@
/* Revert focus to parent */
hFocus = GetFocus();
- if (hwnd == hFocus || IsChild(hwnd, hFocus))
+ if (hwnd == hFocus)
{
HWND parent = GetAncestor(hwnd, GA_PARENT);
if (parent == GetDesktopWindow()) parent = 0;
Modified: vendor/wine/dlls/winex11.drv/current/bitblt.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/winex11.drv/current/bit…
==============================================================================
--- vendor/wine/dlls/winex11.drv/current/bitblt.c [iso-8859-1] (original)
+++ vendor/wine/dlls/winex11.drv/current/bitblt.c [iso-8859-1] Sat Nov 14 12:11:27 2009
@@ -1350,6 +1350,14 @@
return TRUE;
}
+static BOOL same_format(X11DRV_PDEVICE *physDevSrc, X11DRV_PDEVICE *physDevDst)
+{
+ if (physDevSrc->depth != physDevDst->depth) return FALSE;
+ if (!physDevSrc->color_shifts && !physDevDst->color_shifts) return
TRUE;
+ if (physDevSrc->color_shifts && physDevDst->color_shifts)
+ return !memcmp(physDevSrc->color_shifts, physDevDst->color_shifts,
sizeof(ColorShifts));
+ return FALSE;
+}
/***********************************************************************
* X11DRV_StretchBlt
@@ -1446,7 +1454,7 @@
/* try client-side DIB copy */
if (!fStretch && rop == SRCCOPY &&
sSrc == DIB_Status_AppMod && sDst == DIB_Status_AppMod &&
- physDevSrc->depth == physDevDst->depth)
+ same_format(physDevSrc, physDevDst))
{
if (client_side_dib_copy( physDevSrc, visRectSrc.left, visRectSrc.top,
physDevDst, visRectDst.left, visRectDst.top, width,
height ))
@@ -1519,7 +1527,7 @@
}
else if (OP_SRCDST(*opcode) == OP_ARGS(SRC,DST))
{
- if (physDevSrc->depth == physDevDst->depth)
+ if (same_format(physDevSrc, physDevDst))
{
wine_tsx11_lock();
XSetFunction( gdi_display, physDevDst->gc, OP_ROP(*opcode) );
Modified: vendor/wine/dlls/winex11.drv/current/dib.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/winex11.drv/current/dib…
==============================================================================
--- vendor/wine/dlls/winex11.drv/current/dib.c [iso-8859-1] (original)
+++ vendor/wine/dlls/winex11.drv/current/dib.c [iso-8859-1] Sat Nov 14 12:11:27 2009
@@ -4096,6 +4096,11 @@
if (!(obj_size = GetObjectW( hbitmap, sizeof(dib), &dib ))) return 0;
bitmap_type = DIB_GetBitmapInfo( (BITMAPINFOHEADER*)info, &width, &tempHeight,
&descr.infoBpp, &descr.compression);
+ if (bitmap_type == -1)
+ {
+ ERR("Invalid bitmap\n");
+ return 0;
+ }
if (physBitmap->pixmap_depth > 1)
{
@@ -4107,11 +4112,6 @@
palette[1] = peWhite;
}
- if (bitmap_type == -1)
- {
- ERR("Invalid bitmap\n");
- return 0;
- }
descr.lines = tempHeight;
core_header = (bitmap_type == 0);
colorPtr = (LPBYTE) info + (WORD) info->bmiHeader.biSize;
Modified: vendor/wine/dlls/winex11.drv/current/event.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/winex11.drv/current/eve…
==============================================================================
--- vendor/wine/dlls/winex11.drv/current/event.c [iso-8859-1] (original)
+++ vendor/wine/dlls/winex11.drv/current/event.c [iso-8859-1] Sat Nov 14 12:11:27 2009
@@ -476,11 +476,13 @@
{
HWND focus;
Window win;
+ GUITHREADINFO threadinfo;
TRACE( "setting foreground window to %p\n", hwnd );
SetForegroundWindow( hwnd );
- focus = GetFocus();
+ GetGUIThreadInfo(0, &threadinfo);
+ focus = threadinfo.hwndFocus;
if (focus) focus = GetAncestor( focus, GA_ROOT );
win = X11DRV_get_whole_window(focus);
@@ -676,6 +678,7 @@
wine_tsx11_unlock();
}
if (hwnd != GetForegroundWindow()) return;
+ if (root_window != DefaultRootWindow(event->display)) return;
SendMessageW( hwnd, WM_CANCELMODE, 0, 0 );
/* don't reset the foreground window, if the window which is
Modified: vendor/wine/dlls/winex11.drv/current/keyboard.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/winex11.drv/current/key…
==============================================================================
--- vendor/wine/dlls/winex11.drv/current/keyboard.c [iso-8859-1] (original)
+++ vendor/wine/dlls/winex11.drv/current/keyboard.c [iso-8859-1] Sat Nov 14 12:11:27 2009
@@ -1683,11 +1683,29 @@
KeySym keysym;
KeyCode *kcp;
XKeyEvent e2;
- WORD scan, vkey, OEMvkey;
+ WORD scan, vkey;
int keyc, i, keyn, syms;
char ckey[4]={0,0,0,0};
const char (*lkey)[MAIN_LEN][4];
char vkey_used[256] = { 0 };
+
+ /* Ranges of OEM, function key, and character virtual key codes.
+ * Don't include those handled specially in X11DRV_ToUnicodeEx and
+ * X11DRV_MapVirtualKeyEx, like VK_NUMPAD0 - VK_DIVIDE. */
+ static const struct {
+ WORD first, last;
+ } vkey_ranges[] = {
+ { VK_OEM_1, VK_OEM_3 },
+ { VK_OEM_4, VK_ICO_00 },
+ { 0xe6, 0xe6 },
+ { 0xe9, 0xf5 },
+ { VK_OEM_NEC_EQUAL, VK_OEM_NEC_EQUAL },
+ { VK_F1, VK_F24 },
+ { 0x30, 0x39 }, /* VK_0 - VK_9 */
+ { 0x41, 0x5a }, /* VK_A - VK_Z */
+ { 0, 0 }
+ };
+ int vkey_range;
set_kbd_layout_preload_key();
@@ -1737,7 +1755,6 @@
e2.display = display;
e2.state = 0;
- OEMvkey = VK_OEM_8; /* next is available. */
memset(keyc2vkey, 0, sizeof(keyc2vkey));
for (keyc = min_keycode; keyc <= max_keycode; keyc++)
{
@@ -1854,46 +1871,65 @@
}
}
- if (!vkey)
- {
- /* Others keys: let's assign OEM virtual key codes in the allowed range,
- * that is ([0xba,0xc0], [0xdb,0xe4], 0xe6 (given up) et [0xe9,0xf5]) */
- do
- {
- switch (++OEMvkey)
- {
- case 0xc1 : OEMvkey=0xdb; break;
- case 0xe5 : OEMvkey=0xe9; break;
- case 0xf6 : OEMvkey=0xf5; WARN("No more OEM vkey
available!\n");
- }
- } while (OEMvkey < 0xf5 && vkey_used[OEMvkey]);
-
- vkey = VKEY_IF_NOT_USED(OEMvkey);
-
- if (TRACE_ON(keyboard))
- {
- TRACE("OEM specific virtual key %X assigned to keycode %X:\n",
- OEMvkey, e2.keycode);
- TRACE("(");
- for (i = 0; i < keysyms_per_keycode; i += 1)
- {
- const char *ksname;
-
- keysym = XLookupKeysym(&e2, i);
- ksname = XKeysymToString(keysym);
- if (!ksname)
- ksname = "NoSymbol";
- TRACE( "%lX (%s) ", keysym, ksname);
- }
- TRACE(")\n");
- }
- }
-
if (vkey)
{
TRACE("keycode %04x => vkey %04x\n", e2.keycode, vkey);
keyc2vkey[e2.keycode] = vkey;
}
+ } /* for */
+
+ /* For any keycodes which still don't have a vkey, assign any spare
+ * character, function key, or OEM virtual key code. */
+ vkey_range = 0;
+ vkey = vkey_ranges[vkey_range].first;
+ for (keyc = min_keycode; keyc <= max_keycode; keyc++)
+ {
+ if (keyc2vkey[keyc] & 0xff)
+ continue;
+
+ e2.keycode = (KeyCode)keyc;
+ keysym = XLookupKeysym(&e2, 0);
+ if (!keysym)
+ continue;
+
+ while (vkey && vkey_used[vkey])
+ {
+ if (vkey == vkey_ranges[vkey_range].last)
+ {
+ vkey_range++;
+ vkey = vkey_ranges[vkey_range].first;
+ }
+ else
+ vkey++;
+ }
+
+ if (!vkey)
+ {
+ WARN("No more vkeys available!\n");
+ break;
+ }
+
+ if (TRACE_ON(keyboard))
+ {
+ TRACE("spare virtual key %X assigned to keycode %X:\n",
+ vkey, e2.keycode);
+ TRACE("(");
+ for (i = 0; i < keysyms_per_keycode; i += 1)
+ {
+ const char *ksname;
+
+ keysym = XLookupKeysym(&e2, i);
+ ksname = XKeysymToString(keysym);
+ if (!ksname)
+ ksname = "NoSymbol";
+ TRACE( "%lX (%s) ", keysym, ksname);
+ }
+ TRACE(")\n");
+ }
+
+ TRACE("keycode %04x => vkey %04x\n", e2.keycode, vkey);
+ keyc2vkey[e2.keycode] = vkey;
+ vkey_used[vkey] = 1;
} /* for */
#undef VKEY_IF_NOT_USED
Modified: vendor/wine/dlls/winex11.drv/current/opengl.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/winex11.drv/current/ope…
==============================================================================
--- vendor/wine/dlls/winex11.drv/current/opengl.c [iso-8859-1] (original)
+++ vendor/wine/dlls/winex11.drv/current/opengl.c [iso-8859-1] Sat Nov 14 12:11:27 2009
@@ -600,7 +600,7 @@
int pop;
int drawattrib = 0;
int nvfloatattrib = GLX_DONT_CARE;
- int pixelattrib = 0;
+ int pixelattrib = ~0;
/* The list of WGL attributes is allowed to be NULL. We don't return here for NULL
* because we need to do fixups for
GLX_DRAWABLE_TYPE/GLX_RENDER_TYPE/GLX_FLOAT_COMPONENTS_NV. */
@@ -756,7 +756,6 @@
ERR("trying to use WGL_render_texture Attributes without support (was
%x)\n", iWGLAttr[cur]);
return -1; /** error: don't support it */
} else {
- PUSH2(oGLXAttr, GLX_X_RENDERABLE, pop);
drawattrib |= GLX_PBUFFER_BIT;
}
}
@@ -796,12 +795,16 @@
++cur;
}
- /* Apply the OR'd drawable type bitmask now EVEN when WGL_DRAW_TO* is unset.
- * It is needed in all cases because GLX_DRAWABLE_TYPE default to GLX_WINDOW_BIT. */
+ /* By default glXChooseFBConfig defaults to GLX_WINDOW_BIT. wglChoosePixelFormatARB
searches through
+ * all formats. Unless drawattrib is set to a non-zero value override it with ~0, so
that pixmap and pbuffer
+ * formats appear as well. */
+ if(!drawattrib) drawattrib = ~0;
PUSH2(oGLXAttr, GLX_DRAWABLE_TYPE, drawattrib);
TRACE("pAttr[?] = GLX_DRAWABLE_TYPE: %#x\n", drawattrib);
- /* Set GLX_RENDER_TYPE all the time */
+ /* By default glXChooseFBConfig uses GLX_RGBA_BIT as the default value. Since
wglChoosePixelFormatARB
+ * searches in all formats we have to do the same. For this reason we set
GLX_RENDER_TYPE to ~0 unless
+ * it is overridden. */
PUSH2(oGLXAttr, GLX_RENDER_TYPE, pixelattrib);
TRACE("pAttr[?] = GLX_RENDER_TYPE: %#x\n", pixelattrib);
Modified: vendor/wine/dlls/winex11.drv/current/window.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/winex11.drv/current/win…
==============================================================================
--- vendor/wine/dlls/winex11.drv/current/window.c [iso-8859-1] (original)
+++ vendor/wine/dlls/winex11.drv/current/window.c [iso-8859-1] Sat Nov 14 12:11:27 2009
@@ -2025,14 +2025,11 @@
wine_tsx11_lock();
changes.stack_mode = Above;
XConfigureWindow( display, data->whole_window, CWStackMode, &changes );
- if (root_window == DefaultRootWindow(display))
- {
- /* we must not use CurrentTime (ICCCM), so try to use last message time instead
*/
- /* FIXME: this is not entirely correct */
- XSetInputFocus( display, data->whole_window, RevertToParent,
- /* CurrentTime */
- GetMessageTime() - EVENT_x11_time_to_win32_time(0));
- }
+ /* we must not use CurrentTime (ICCCM), so try to use last message time instead */
+ /* FIXME: this is not entirely correct */
+ XSetInputFocus( display, data->whole_window, RevertToParent,
+ /* CurrentTime */
+ GetMessageTime() - EVENT_x11_time_to_win32_time(0));
wine_tsx11_unlock();
}
Modified: vendor/wine/dlls/winex11.drv/current/x11drv_main.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/winex11.drv/current/x11…
==============================================================================
--- vendor/wine/dlls/winex11.drv/current/x11drv_main.c [iso-8859-1] (original)
+++ vendor/wine/dlls/winex11.drv/current/x11drv_main.c [iso-8859-1] Sat Nov 14 12:11:27
2009
@@ -188,7 +188,8 @@
*/
static inline BOOL ignore_error( Display *display, XErrorEvent *event )
{
- if (event->request_code == X_SetInputFocus && event->error_code ==
BadMatch) return TRUE;
+ if (event->request_code == X_SetInputFocus &&
+ (event->error_code == BadMatch || event->error_code == BadWindow)) return
TRUE;
/* ignore a number of errors on gdi display caused by creating/destroying windows */
if (display == gdi_display)
Modified: vendor/wine/dlls/winex11.drv/current/xfont.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/winex11.drv/current/xfo…
==============================================================================
--- vendor/wine/dlls/winex11.drv/current/xfont.c [iso-8859-1] (original)
+++ vendor/wine/dlls/winex11.drv/current/xfont.c [iso-8859-1] Sat Nov 14 12:11:27 2009
@@ -1852,7 +1852,7 @@
**
** - on Red Hat systems, DISPLAY is commonly set to one of
** either 'unix:0.0' or ':0' or ':0.0'.
- ** - on MacOS X systems, DISPLAY is commonly set to
+ ** - on Mac OS X systems, DISPLAY is commonly set to
** /tmp/foo/:0
**
** after this code, all of the above will resolve to ':0.0'.
Modified: vendor/wine/dlls/winex11.drv/current/xrender.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/winex11.drv/current/xre…
==============================================================================
--- vendor/wine/dlls/winex11.drv/current/xrender.c [iso-8859-1] (original)
+++ vendor/wine/dlls/winex11.drv/current/xrender.c [iso-8859-1] Sat Nov 14 12:11:27 2009
@@ -1956,9 +1956,6 @@
return FALSE;
}
- if ((blendfn.AlphaFormat & AC_SRC_ALPHA) && blendfn.SourceConstantAlpha
!= 0xff)
- FIXME("Ignoring SourceConstantAlpha %d for AC_SRC_ALPHA\n",
blendfn.SourceConstantAlpha);
-
if(dib.dsBm.bmBitsPixel != 32) {
FIXME("not a 32 bpp dibsection\n");
return FALSE;
@@ -1979,11 +1976,35 @@
if (blendfn.AlphaFormat & AC_SRC_ALPHA)
{
- for(; y >= y2; y--)
+ if (blendfn.SourceConstantAlpha == 0xff)
{
- memcpy(dstbits, (char *)dib.dsBm.bmBits + y * dib.dsBm.bmWidthBytes + xSrc *
4,
- widthSrc * 4);
- dstbits += (top_down ? -1 : 1) * widthSrc;
+ for (; y >= y2; y--)
+ {
+ memcpy(dstbits, (char *)dib.dsBm.bmBits + y * dib.dsBm.bmWidthBytes +
xSrc * 4,
+ widthSrc * 4);
+ dstbits += (top_down ? -1 : 1) * widthSrc;
+ }
+ }
+ else
+ {
+ /* SourceConstantAlpha combined with source alpha */
+ for (; y >= y2; y--)
+ {
+ int x;
+ DWORD *srcbits = (DWORD *)((char *)dib.dsBm.bmBits + y *
dib.dsBm.bmWidthBytes) + xSrc;
+ for (x = 0; x < widthSrc; x++)
+ {
+ DWORD argb = *srcbits++;
+ BYTE *s = (BYTE *) &argb;
+ s[0] = (s[0] * blendfn.SourceConstantAlpha) / 255;
+ s[1] = (s[1] * blendfn.SourceConstantAlpha) / 255;
+ s[2] = (s[2] * blendfn.SourceConstantAlpha) / 255;
+ s[3] = (s[3] * blendfn.SourceConstantAlpha) / 255;
+ *dstbits++ = argb;
+ }
+ if (top_down) /* we traversed the row forward so we should go back by
two rows */
+ dstbits -= 2 * widthSrc;
+ }
}
}
else
@@ -2063,21 +2084,20 @@
{
/* At depths >1, the depth of physBitmap and physDev might not be the same e.g.
the physbitmap might be a 16-bit DIB while the physdev uses 24-bit */
int depth = physBitmap->pixmap_depth == 1 ? 1 : physDev->depth;
+ const WineXRenderFormat *src_format =
get_xrender_format_from_color_shifts(physBitmap->pixmap_depth,
&physBitmap->pixmap_color_shifts);
+ const WineXRenderFormat *dst_format =
get_xrender_format_from_color_shifts(physDev->depth, physDev->color_shifts);
wine_tsx11_lock();
physDev->brush.pixmap = XCreatePixmap(gdi_display, root_window, width, height,
depth);
- /* Use XCopyArea when the physBitmap and brush.pixmap have the same depth. */
- if(physBitmap->pixmap_depth == 1 || physDev->depth ==
physBitmap->pixmap_depth)
+ /* Use XCopyArea when the physBitmap and brush.pixmap have the same format. */
+ if(physBitmap->pixmap_depth == 1 || src_format->format ==
dst_format->format)
{
XCopyArea( gdi_display, physBitmap->pixmap, physDev->brush.pixmap,
get_bitmap_gc(physBitmap->pixmap_depth), 0, 0, width, height, 0, 0
);
}
- else /* We meed depth conversion */
- {
- const WineXRenderFormat *src_format =
get_xrender_format_from_color_shifts(physBitmap->pixmap_depth,
&physBitmap->pixmap_color_shifts);
- const WineXRenderFormat *dst_format =
get_xrender_format_from_color_shifts(physDev->depth, physDev->color_shifts);
-
+ else /* We need depth conversion */
+ {
Picture src_pict, dst_pict;
XRenderPictureAttributes pa;
pa.subwindow_mode = IncludeInferiors;
@@ -2104,6 +2124,7 @@
int height = visRectDst->bottom - visRectDst->top;
int x_src = physDevSrc->dc_rect.left + visRectSrc->left;
int y_src = physDevSrc->dc_rect.top + visRectSrc->top;
+ struct xrender_info *src_info = get_xrender_info(physDevSrc);
const WineXRenderFormat *dst_format =
get_xrender_format_from_color_shifts(physDevDst->depth, physDevDst->color_shifts);
Picture src_pict=0, dst_pict=0, mask_pict=0;
@@ -2131,8 +2152,8 @@
if((physDevDst->depth == 1) && (physDevSrc->depth > 1))
return FALSE;
- /* Just use traditional X copy when the depths match and we don't need stretching
*/
- if((physDevSrc->depth == physDevDst->depth) && !stretch)
+ /* Just use traditional X copy when the formats match and we don't need
stretching */
+ if((src_info->format->format == dst_format->format) && !stretch)
{
TRACE("Source and destination depth match and no stretching needed falling
back to XCopyArea\n");
wine_tsx11_lock();
Modified: vendor/wine/server/current/fd.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/server/current/fd.c?rev=4415…
==============================================================================
--- vendor/wine/server/current/fd.c [iso-8859-1] (original)
+++ vendor/wine/server/current/fd.c [iso-8859-1] Sat Nov 14 12:11:27 2009
@@ -190,6 +190,7 @@
unsigned int access; /* file access (FILE_READ_DATA etc.) */
unsigned int options; /* file options (FILE_DELETE_ON_CLOSE,
FILE_SYNCHRONOUS...) */
unsigned int sharing; /* file sharing mode */
+ char *unix_name; /* unix file name */
int unix_fd; /* unix file descriptor */
unsigned int no_fd_status;/* status to return when unix_fd is -1 */
unsigned int signaled :1; /* is the fd signaled? */
@@ -1368,6 +1369,7 @@
if (fd->completion) release_object( fd->completion );
remove_fd_locks( fd );
+ free( fd->unix_name );
list_remove( &fd->inode_entry );
if (fd->poll_index != -1) remove_poll_user( fd, fd->poll_index );
if (fd->inode)
@@ -1438,6 +1440,7 @@
fd->options = 0;
fd->sharing = 0;
fd->unix_fd = -1;
+ fd->unix_name = NULL;
fd->signaled = 1;
fd->fs_locks = 1;
fd->poll_index = -1;
@@ -1470,6 +1473,7 @@
fd->access = 0;
fd->options = options;
fd->sharing = 0;
+ fd->unix_name = NULL;
fd->unix_fd = -1;
fd->signaled = 0;
fd->fs_locks = 0;
@@ -1576,6 +1580,9 @@
else rw_mode = O_WRONLY;
}
else rw_mode = O_RDONLY;
+
+ if (!(fd->unix_name = mem_alloc( strlen(name) + 1 ))) goto error;
+ strcpy( fd->unix_name, name );
if ((fd->unix_fd = open( name, rw_mode | (flags & ~O_TRUNC), *mode )) == -1)
{
@@ -2003,6 +2010,24 @@
if (root) release_object( root );
}
+/* get the Unix name from a file handle */
+DECL_HANDLER(get_handle_unix_name)
+{
+ struct fd *fd;
+
+ if ((fd = get_handle_fd_obj( current->process, req->handle, 0 )))
+ {
+ if (fd->unix_name)
+ {
+ data_size_t name_len = strlen( fd->unix_name );
+ reply->name_len = name_len;
+ if (name_len <= get_reply_max_size()) set_reply_data( fd->unix_name,
name_len );
+ else set_error( STATUS_BUFFER_OVERFLOW );
+ }
+ release_object( fd );
+ }
+}
+
/* get a Unix fd to access a file */
DECL_HANDLER(get_handle_fd)
{
Modified: vendor/wine/server/current/protocol.def
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/server/current/protocol.def?…
==============================================================================
--- vendor/wine/server/current/protocol.def [iso-8859-1] (original)
+++ vendor/wine/server/current/protocol.def [iso-8859-1] Sat Nov 14 12:11:27 2009
@@ -1003,6 +1003,15 @@
@END
+/* Get the Unix name from a file handle */
+@REQ(get_handle_unix_name)
+ obj_handle_t handle; /* file handle */
+@REPLY
+ data_size_t name_len; /* unix name length */
+ VARARG(name,string); /* unix name */
+@END
+
+
/* Get a Unix fd to access a file */
@REQ(get_handle_fd)
obj_handle_t handle; /* handle to the file */
Modified: vendor/wine/server/current/request.h
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/server/current/request.h?rev…
==============================================================================
--- vendor/wine/server/current/request.h [iso-8859-1] (original)
+++ vendor/wine/server/current/request.h [iso-8859-1] Sat Nov 14 12:11:27 2009
@@ -148,6 +148,7 @@
DECL_HANDLER(create_file);
DECL_HANDLER(open_file_object);
DECL_HANDLER(alloc_file_handle);
+DECL_HANDLER(get_handle_unix_name);
DECL_HANDLER(get_handle_fd);
DECL_HANDLER(flush_file);
DECL_HANDLER(lock_file);
@@ -394,6 +395,7 @@
(req_handler)req_create_file,
(req_handler)req_open_file_object,
(req_handler)req_alloc_file_handle,
+ (req_handler)req_get_handle_unix_name,
(req_handler)req_get_handle_fd,
(req_handler)req_flush_file,
(req_handler)req_lock_file,
@@ -846,6 +848,9 @@
C_ASSERT( FIELD_OFFSET(struct alloc_file_handle_request, fd) == 20 );
C_ASSERT( FIELD_OFFSET(struct alloc_file_handle_reply, handle) == 8 );
C_ASSERT( sizeof(struct alloc_file_handle_reply) == 16 );
+C_ASSERT( FIELD_OFFSET(struct get_handle_unix_name_request, handle) == 12 );
+C_ASSERT( FIELD_OFFSET(struct get_handle_unix_name_reply, name_len) == 8 );
+C_ASSERT( sizeof(struct get_handle_unix_name_reply) == 16 );
C_ASSERT( FIELD_OFFSET(struct get_handle_fd_request, handle) == 12 );
C_ASSERT( FIELD_OFFSET(struct get_handle_fd_reply, type) == 8 );
C_ASSERT( FIELD_OFFSET(struct get_handle_fd_reply, removable) == 12 );
Modified: vendor/wine/server/current/trace.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/server/current/trace.c?rev=4…
==============================================================================
--- vendor/wine/server/current/trace.c [iso-8859-1] (original)
+++ vendor/wine/server/current/trace.c [iso-8859-1] Sat Nov 14 12:11:27 2009
@@ -1457,6 +1457,17 @@
fprintf( stderr, " handle=%04x", req->handle );
}
+static void dump_get_handle_unix_name_request( const struct get_handle_unix_name_request
*req )
+{
+ fprintf( stderr, " handle=%04x", req->handle );
+}
+
+static void dump_get_handle_unix_name_reply( const struct get_handle_unix_name_reply *req
)
+{
+ fprintf( stderr, " name_len=%u", req->name_len );
+ dump_varargs_string( ", name=", cur_size );
+}
+
static void dump_get_handle_fd_request( const struct get_handle_fd_request *req )
{
fprintf( stderr, " handle=%04x", req->handle );
@@ -3832,6 +3843,7 @@
(dump_func)dump_create_file_request,
(dump_func)dump_open_file_object_request,
(dump_func)dump_alloc_file_handle_request,
+ (dump_func)dump_get_handle_unix_name_request,
(dump_func)dump_get_handle_fd_request,
(dump_func)dump_flush_file_request,
(dump_func)dump_lock_file_request,
@@ -4075,6 +4087,7 @@
(dump_func)dump_create_file_reply,
(dump_func)dump_open_file_object_reply,
(dump_func)dump_alloc_file_handle_reply,
+ (dump_func)dump_get_handle_unix_name_reply,
(dump_func)dump_get_handle_fd_reply,
(dump_func)dump_flush_file_reply,
(dump_func)dump_lock_file_reply,
@@ -4318,6 +4331,7 @@
"create_file",
"open_file_object",
"alloc_file_handle",
+ "get_handle_unix_name",
"get_handle_fd",
"flush_file",
"lock_file",