Author: fireball Date: Sat Nov 14 12:29:19 2009 New Revision: 44154
URL: http://svn.reactos.org/svn/reactos?rev=44154&view=rev Log: - Update to Wine-1.1.33. - Merge 44153 from trunk.
Removed: branches/arwinss/reactos/dll/win32/user32/driver16.c Modified: branches/arwinss/reactos/dll/win32/gdi32/ (props changed) branches/arwinss/reactos/dll/win32/gdi32/enhmfdrv/graphics.c branches/arwinss/reactos/dll/win32/user32/ (props changed) branches/arwinss/reactos/dll/win32/user32/Makefile.in branches/arwinss/reactos/dll/win32/user32/dde_misc.c branches/arwinss/reactos/dll/win32/user32/defdlg.c branches/arwinss/reactos/dll/win32/user32/message.c branches/arwinss/reactos/dll/win32/user32/msg16.c branches/arwinss/reactos/dll/win32/user32/nonclient.c branches/arwinss/reactos/dll/win32/user32/user32.spec branches/arwinss/reactos/dll/win32/user32/win.c branches/arwinss/reactos/dll/win32/user32/winpos.c branches/arwinss/reactos/dll/win32/winex11.drv/ (props changed) branches/arwinss/reactos/dll/win32/winex11.drv/bitblt.c branches/arwinss/reactos/dll/win32/winex11.drv/dib.c branches/arwinss/reactos/dll/win32/winex11.drv/event.c branches/arwinss/reactos/dll/win32/winex11.drv/keyboard.c branches/arwinss/reactos/dll/win32/winex11.drv/opengl.c branches/arwinss/reactos/dll/win32/winex11.drv/window.c branches/arwinss/reactos/dll/win32/winex11.drv/x11drv_main.c branches/arwinss/reactos/dll/win32/winex11.drv/xfont.c branches/arwinss/reactos/dll/win32/winex11.drv/xrender.c branches/arwinss/reactos/include/psdk/ (props changed) branches/arwinss/reactos/include/psdk/commctrl.h (props changed) branches/arwinss/reactos/include/psdk/winuser.h
Propchange: branches/arwinss/reactos/dll/win32/gdi32/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Sat Nov 14 12:29:19 2009 @@ -1,3 +1,3 @@ /branches/ros-amd64-bringup/reactos/dll/win32/gdi32:35746,35789,36614,36930,38148,38151,38265,38268,39333,39345,40991,41000,41027-41028,41050,41052,41082-41086,41549,43080 /trunk/reactos/dll/win32/gdi32:42000-43670 -/vendor/wine/dlls/gdi32/current:43136,43149,43398,43708 +/vendor/wine/dlls/gdi32/current:43136,43149,43398,43708,44151
Modified: branches/arwinss/reactos/dll/win32/gdi32/enhmfdrv/graphics.c URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/gdi32/... ============================================================================== --- branches/arwinss/reactos/dll/win32/gdi32/enhmfdrv/graphics.c [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/gdi32/enhmfdrv/graphics.c [iso-8859-1] Sat Nov 14 12:29:19 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; }
Propchange: branches/arwinss/reactos/dll/win32/user32/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Sat Nov 14 12:29:19 2009 @@ -1,3 +1,3 @@ /branches/ros-amd64-bringup/reactos/dll/win32/user32:35746,35789,36614,36930,38148,38151,38265,38268,39333,39345,40991,41000,41027-41028,41050,41052,41082-41086,41549,43080 /trunk/reactos/dll/win32/user32:42000-43670 -/vendor/wine/dlls/user32/current:43136,43149,43398,43708 +/vendor/wine/dlls/user32/current:43136,43149,43398,43708,44151
Modified: branches/arwinss/reactos/dll/win32/user32/Makefile.in URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user32... ============================================================================== --- branches/arwinss/reactos/dll/win32/user32/Makefile.in [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/user32/Makefile.in [iso-8859-1] Sat Nov 14 12:29:19 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: branches/arwinss/reactos/dll/win32/user32/dde_misc.c URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user32... ============================================================================== --- branches/arwinss/reactos/dll/win32/user32/dde_misc.c [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/user32/dde_misc.c [iso-8859-1] Sat Nov 14 12:29:19 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: branches/arwinss/reactos/dll/win32/user32/defdlg.c URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user32... ============================================================================== --- branches/arwinss/reactos/dll/win32/user32/defdlg.c [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/user32/defdlg.c [iso-8859-1] Sat Nov 14 12:29:19 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,68 +358,13 @@ }
/*********************************************************************** - * DefDlgProc (USER.308) - */ -#ifndef __REACTOS__ -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); -} -#endif - - -/*********************************************************************** * 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; @@ -475,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 ); }
@@ -485,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; @@ -526,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: branches/arwinss/reactos/dll/win32/user32/driver16.c URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user32... ============================================================================== --- branches/arwinss/reactos/dll/win32/user32/driver16.c [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/user32/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: branches/arwinss/reactos/dll/win32/user32/message.c URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user32... ============================================================================== --- branches/arwinss/reactos/dll/win32/user32/message.c [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/user32/message.c [iso-8859-1] Sat Nov 14 12:29:19 2009 @@ -3367,28 +3367,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: branches/arwinss/reactos/dll/win32/user32/msg16.c URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user32... ============================================================================== --- branches/arwinss/reactos/dll/win32/user32/msg16.c [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/user32/msg16.c [iso-8859-1] Sat Nov 14 12:29:19 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: branches/arwinss/reactos/dll/win32/user32/nonclient.c URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user32... ============================================================================== --- branches/arwinss/reactos/dll/win32/user32/nonclient.c [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/user32/nonclient.c [iso-8859-1] Sat Nov 14 12:29:19 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: branches/arwinss/reactos/dll/win32/user32/user32.spec URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user32... ============================================================================== --- branches/arwinss/reactos/dll/win32/user32/user32.spec [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/user32/user32.spec [iso-8859-1] Sat Nov 14 12:29:19 2009 @@ -776,7 +776,6 @@ # Wine extensions: Win16 functions that are needed by other dlls # @ stdcall DestroyIcon32(long long) -@ stdcall UserYield16()
################################################################ # Wine dll separation hacks, these will go away, don't use them
Modified: branches/arwinss/reactos/dll/win32/user32/win.c URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user32... ============================================================================== --- branches/arwinss/reactos/dll/win32/user32/win.c [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/user32/win.c [iso-8859-1] Sat Nov 14 12:29:19 2009 @@ -1847,11 +1847,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); @@ -1860,11 +1862,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: branches/arwinss/reactos/dll/win32/user32/winpos.c URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user32... ============================================================================== --- branches/arwinss/reactos/dll/win32/user32/winpos.c [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/user32/winpos.c [iso-8859-1] Sat Nov 14 12:29:19 2009 @@ -1057,7 +1057,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;
Propchange: branches/arwinss/reactos/dll/win32/winex11.drv/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Sat Nov 14 12:29:19 2009 @@ -1,3 +1,3 @@ /branches/ros-amd64-bringup/reactos/dll/win32/winex11.drv:35746,35789,36614,36930,38148,38151,38265,38268,39333,39345,40991,41000,41027-41028,41050,41052,41082-41086,41549,43080 /trunk/reactos/dll/win32/winex11.drv:42000-43670 -/vendor/wine/dlls/winex11.drv/current:43149,43398,43708 +/vendor/wine/dlls/winex11.drv/current:43149,43398,43708,44151
Modified: branches/arwinss/reactos/dll/win32/winex11.drv/bitblt.c URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winex1... ============================================================================== --- branches/arwinss/reactos/dll/win32/winex11.drv/bitblt.c [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/winex11.drv/bitblt.c [iso-8859-1] Sat Nov 14 12:29:19 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: branches/arwinss/reactos/dll/win32/winex11.drv/dib.c URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winex1... ============================================================================== --- branches/arwinss/reactos/dll/win32/winex11.drv/dib.c [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/winex11.drv/dib.c [iso-8859-1] Sat Nov 14 12:29:19 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: branches/arwinss/reactos/dll/win32/winex11.drv/event.c URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winex1... ============================================================================== --- branches/arwinss/reactos/dll/win32/winex11.drv/event.c [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/winex11.drv/event.c [iso-8859-1] Sat Nov 14 12:29:19 2009 @@ -477,11 +477,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);
@@ -677,6 +679,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: branches/arwinss/reactos/dll/win32/winex11.drv/keyboard.c URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winex1... ============================================================================== --- branches/arwinss/reactos/dll/win32/winex11.drv/keyboard.c [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/winex11.drv/keyboard.c [iso-8859-1] Sat Nov 14 12:29:19 2009 @@ -1684,11 +1684,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();
@@ -1738,7 +1756,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++) { @@ -1855,46 +1872,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: branches/arwinss/reactos/dll/win32/winex11.drv/opengl.c URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winex1... ============================================================================== --- branches/arwinss/reactos/dll/win32/winex11.drv/opengl.c [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/winex11.drv/opengl.c [iso-8859-1] Sat Nov 14 12:29:19 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: branches/arwinss/reactos/dll/win32/winex11.drv/window.c URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winex1... ============================================================================== --- branches/arwinss/reactos/dll/win32/winex11.drv/window.c [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/winex11.drv/window.c [iso-8859-1] Sat Nov 14 12:29:19 2009 @@ -2026,14 +2026,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: branches/arwinss/reactos/dll/win32/winex11.drv/x11drv_main.c URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winex1... ============================================================================== --- branches/arwinss/reactos/dll/win32/winex11.drv/x11drv_main.c [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/winex11.drv/x11drv_main.c [iso-8859-1] Sat Nov 14 12:29:19 2009 @@ -189,7 +189,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: branches/arwinss/reactos/dll/win32/winex11.drv/xfont.c URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winex1... ============================================================================== --- branches/arwinss/reactos/dll/win32/winex11.drv/xfont.c [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/winex11.drv/xfont.c [iso-8859-1] Sat Nov 14 12:29:19 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: branches/arwinss/reactos/dll/win32/winex11.drv/xrender.c URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winex1... ============================================================================== --- branches/arwinss/reactos/dll/win32/winex11.drv/xrender.c [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/winex11.drv/xrender.c [iso-8859-1] Sat Nov 14 12:29:19 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();
Propchange: branches/arwinss/reactos/include/psdk/ ------------------------------------------------------------------------------ --- svn:mergeinfo (added) +++ svn:mergeinfo Sat Nov 14 12:29:19 2009 @@ -1,0 +1,2 @@ +/branches/ros-amd64-bringup/reactos/include/psdk:34711-34712,34743,34812,34839,34842,34917,35323-35324,35347-35348,35361,35436,35509,35515,35588,35739,35746,35771,35789,35823,35902,35904-35906,35942,35947-35949,35952-35953,35966,36013,36360,36388-36389,36570,36614,36930,37323,37434,37472,37475,37536,37820-37821,37869,37873,37990-37991,38013-38014,38148,38151,38265,38268,39151,39333,39345,40991,41000,41027-41028,41050,41052,41082-41086,41549,43080,43426,43454 +/trunk/reactos/include/psdk:42000-43670,44153
Propchange: branches/arwinss/reactos/include/psdk/commctrl.h ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Sat Nov 14 12:29:19 2009 @@ -1,2 +1,2 @@ /branches/ros-amd64-bringup/reactos/include/psdk/commctrl.h:34711-34712,34743,34812,34839,34842,34917,35323-35324,35347-35348,35361,35436,35509,35515,35588,35739,35746,35771,35789,35823,35902,35904-35906,35942,35947-35949,35952-35953,35966,36013,36360,36388-36389,36570,36614,36930,37323,37434,37472,37475,37536,37820-37821,37869,37873,37990-37991,38013-38014,38148,38151,38265,38268,39151,39333,39345,40991,41000,41027-41028,41050,41052,41082-41086,41549,43080,43426,43454 -/trunk/reactos/include/psdk/commctrl.h:42000-43670,44013,44015,44019 +/trunk/reactos/include/psdk/commctrl.h:42000-43670,44013,44015,44019,44153
Modified: branches/arwinss/reactos/include/psdk/winuser.h URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/include/psdk/win... ============================================================================== --- branches/arwinss/reactos/include/psdk/winuser.h [iso-8859-1] (original) +++ branches/arwinss/reactos/include/psdk/winuser.h [iso-8859-1] Sat Nov 14 12:29:19 2009 @@ -2254,6 +2254,8 @@ #if (_WIN32_WINNT >= 0x0500) #define VK_OEM_102 0xE2 #endif +#define VK_ICO_HELP 0xE3 /* Help key on ICO */ +#define VK_ICO_00 0xE4 /* 00 key on ICO */ #define VK_PROCESSKEY 0xE5 #if (_WIN32_WINNT >= 0x0500) #define VK_PACKET 0xE7