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/user3…
==============================================================================
--- 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/user3…
==============================================================================
--- 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/user3…
==============================================================================
--- 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/user3…
==============================================================================
--- 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/user3…
==============================================================================
--- 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/user3…
==============================================================================
--- 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/user3…
==============================================================================
--- 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/user3…
==============================================================================
--- 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/user3…
==============================================================================
--- 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/user3…
==============================================================================
--- 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/winex…
==============================================================================
--- 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/winex…
==============================================================================
--- 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/winex…
==============================================================================
--- 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/winex…
==============================================================================
--- 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/winex…
==============================================================================
--- 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/winex…
==============================================================================
--- 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/winex…
==============================================================================
--- 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/winex…
==============================================================================
--- 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/winex…
==============================================================================
--- 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/wi…
==============================================================================
--- 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