Cygwin/X: Fix multiwindow extwm mode to build again

Build and link with rootless extension
Update Xwin code for removal of RootlessAccelInit()
Fix Xwin code which now has a collision with the type name EventType

Based on patches from Colin Harrison, Jon Turney and Yaakov Selkowitz

Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk>
This commit is contained in:
Jon TURNEY 2009-05-20 21:32:54 +01:00
parent 638ca9a7a2
commit 65d74d9314
6 changed files with 16 additions and 27 deletions

View File

@ -1617,6 +1617,7 @@ fi
AC_MSG_RESULT([$XWIN]) AC_MSG_RESULT([$XWIN])
if test "x$XWIN" = xyes; then if test "x$XWIN" = xyes; then
PKG_CHECK_EXISTS([windowswmproto], [WINDOWSWM=yes], [WINDOWSWM=no])
AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version]) AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version])
AC_CHECK_TOOL(WINDRES, windres) AC_CHECK_TOOL(WINDRES, windres)
case $host_os in case $host_os in
@ -1625,7 +1626,7 @@ if test "x$XWIN" = xyes; then
PKG_CHECK_MODULES([XWINMODULES],[x11 xdmcp xau xfont]) PKG_CHECK_MODULES([XWINMODULES],[x11 xdmcp xau xfont])
AC_DEFINE(HAS_DEVWINDOWS,1,[Cygwin has /dev/windows for signaling new win32 messages]) AC_DEFINE(HAS_DEVWINDOWS,1,[Cygwin has /dev/windows for signaling new win32 messages])
AC_DEFINE(ROOTLESS,1,[Build Rootless code]) AC_DEFINE(ROOTLESS,1,[Build Rootless code])
CFLAGS="$CFLAGS -DFD_SETSIZE=256" CFLAGS="$CFLAGS -DFD_SETSIZE=256 -DROOTLESS_WORKAROUND"
;; ;;
mingw*) mingw*)
XWIN_SERVER_NAME=Xming XWIN_SERVER_NAME=Xming
@ -1658,7 +1659,7 @@ if test "x$XWIN" = xyes; then
fi fi
AM_CONDITIONAL(XWIN, [test "x$XWIN" = xyes]) AM_CONDITIONAL(XWIN, [test "x$XWIN" = xyes])
AM_CONDITIONAL(XWIN_MULTIWINDOW, [test "x$XWIN" = xyes]) AM_CONDITIONAL(XWIN_MULTIWINDOW, [test "x$XWIN" = xyes])
AM_CONDITIONAL(XWIN_MULTIWINDOWEXTWM, [test "x$XWIN" = xyes && false]) AM_CONDITIONAL(XWIN_MULTIWINDOWEXTWM, [test "x$XWIN" = xyes && test "x$WINDOWSWM" = xyes])
AM_CONDITIONAL(XWIN_CLIPBOARD, [test "x$XWIN" = xyes]) AM_CONDITIONAL(XWIN_CLIPBOARD, [test "x$XWIN" = xyes])
AM_CONDITIONAL(XWIN_GLX_WINDOWS, [test "x$XWIN" = xyes && false]) AM_CONDITIONAL(XWIN_GLX_WINDOWS, [test "x$XWIN" = xyes && false])
AM_CONDITIONAL(XWIN_NATIVEGDI, [test "x$XWIN" = xyes && false]) AM_CONDITIONAL(XWIN_NATIVEGDI, [test "x$XWIN" = xyes && false])

View File

@ -34,6 +34,7 @@ SRCS_MULTIWINDOWEXTWM = \
winwin32rootlesswndproc.c \ winwin32rootlesswndproc.c \
winwindowswm.c winwindowswm.c
DEFS_MULTIWINDOWEXTWM = -DXWIN_MULTIWINDOWEXTWM DEFS_MULTIWINDOWEXTWM = -DXWIN_MULTIWINDOWEXTWM
MULTIWINDOWEXTWM_LIBS = $(top_builddir)/miext/rootless/librootless.la
endif endif
if XWIN_NATIVEGDI if XWIN_NATIVEGDI
@ -147,7 +148,7 @@ XWin_SOURCES = $(SRCS)
INCLUDES = -I$(top_srcdir)/miext/rootless INCLUDES = -I$(top_srcdir)/miext/rootless
XWin_DEPENDENCIES = $(XWIN_LIBS) XWin_DEPENDENCIES = $(XWIN_LIBS)
XWin_LDADD = $(XWIN_LIBS) $(MAIN_LIB) $(XSERVER_LIBS) $(XSERVER_SYS_LIBS) $(XWIN_SYS_LIBS) XWin_LDADD = $(MULTIWINDOWEXTWM_LIBS) $(XWIN_LIBS) $(MAIN_LIB) $(XSERVER_LIBS) $(XSERVER_SYS_LIBS) $(XWIN_SYS_LIBS)
.rc.o: .rc.o:
$(WINDRES) --use-temp-file -i $< --input-format=rc -o $@ -O coff -DPROJECT_NAME=\"$(VENDOR_NAME_SHORT)\" $(WINDRES) --use-temp-file -i $< --input-format=rc -o $@ -O coff -DPROJECT_NAME=\"$(VENDOR_NAME_SHORT)\"

View File

@ -57,7 +57,7 @@
#include "ddraw.h" #include "ddraw.h"
#include "winwindow.h" #include "winwindow.h"
#ifdef XWIN_MULTIWINDOWEXTWM #ifdef XWIN_MULTIWINDOWEXTWM
#include "windowswmstr.h" #include <X11/extensions/windowswmstr.h>
#else #else
/* We need the native HWND atom for intWM, so for consistency use the /* We need the native HWND atom for intWM, so for consistency use the
same name as extWM would if we were building with enabled... */ same name as extWM would if we were building with enabled... */

View File

@ -378,22 +378,6 @@ winFinishScreenInitFB (int index,
pScreen->blockData = pScreen; pScreen->blockData = pScreen;
pScreen->wakeupData = pScreen; pScreen->wakeupData = pScreen;
#ifdef XWIN_MULTIWINDOWEXTWM
/*
* Setup acceleration for multi-window external window manager mode.
* To be compatible with the Damage extension, this must be done
* before calling miDCInitialize, which calls DamageSetup.
*/
if (pScreenInfo->fMWExtWM)
{
if (!RootlessAccelInit (pScreen))
{
ErrorF ("winFinishScreenInitFB - RootlessAccelInit () failed\n");
return FALSE;
}
}
#endif
#ifdef RENDER #ifdef RENDER
/* Render extension initialization, calls miPictureInit */ /* Render extension initialization, calls miPictureInit */
if (!fbPictureInit (pScreen, NULL, 0)) if (!fbPictureInit (pScreen, NULL, 0))

View File

@ -50,7 +50,7 @@ static DISPATCH_PROC(SProcWindowsWMDispatch);
static unsigned char WMReqCode = 0; static unsigned char WMReqCode = 0;
static int WMEventBase = 0; static int WMEventBase = 0;
static RESTYPE ClientType, EventType; /* resource types for event masks */ static RESTYPE ClientType, eventResourceType; /* resource types for event masks */
static XID eventResource; static XID eventResource;
/* Currently selected events */ /* Currently selected events */
@ -85,10 +85,10 @@ winWindowsWMExtensionInit ()
ExtensionEntry* extEntry; ExtensionEntry* extEntry;
ClientType = CreateNewResourceType(WMFreeClient); ClientType = CreateNewResourceType(WMFreeClient);
EventType = CreateNewResourceType(WMFreeEvents); eventResourceType = CreateNewResourceType(WMFreeEvents);
eventResource = FakeClientID(0); eventResource = FakeClientID(0);
if (ClientType && EventType && if (ClientType && eventResourceType &&
(extEntry = AddExtension(WINDOWSWMNAME, (extEntry = AddExtension(WINDOWSWMNAME,
WindowsWMNumberEvents, WindowsWMNumberEvents,
WindowsWMNumberErrors, WindowsWMNumberErrors,
@ -147,7 +147,7 @@ WMFreeClient (pointer data, XID id)
WMEventPtr *pHead, pCur, pPrev; WMEventPtr *pHead, pCur, pPrev;
pEvent = (WMEventPtr) data; pEvent = (WMEventPtr) data;
pHead = (WMEventPtr *) LookupIDByType(eventResource, EventType); pHead = (WMEventPtr *) LookupIDByType(eventResource, eventResourceType);
if (pHead) if (pHead)
{ {
pPrev = 0; pPrev = 0;
@ -193,7 +193,7 @@ ProcWindowsWMSelectInput (register ClientPtr client)
REQUEST_SIZE_MATCH (xWindowsWMSelectInputReq); REQUEST_SIZE_MATCH (xWindowsWMSelectInputReq);
pHead = (WMEventPtr *)SecurityLookupIDByType(client, eventResource, pHead = (WMEventPtr *)SecurityLookupIDByType(client, eventResource,
EventType, DixWriteAccess); eventResourceType, DixWriteAccess);
if (stuff->mask != 0) if (stuff->mask != 0)
{ {
if (pHead) if (pHead)
@ -235,7 +235,7 @@ ProcWindowsWMSelectInput (register ClientPtr client)
{ {
pHead = (WMEventPtr *) xalloc (sizeof (WMEventPtr)); pHead = (WMEventPtr *) xalloc (sizeof (WMEventPtr));
if (!pHead || if (!pHead ||
!AddResource (eventResource, EventType, (pointer)pHead)) !AddResource (eventResource, eventResourceType, (pointer)pHead))
{ {
FreeResource (clientResource, RT_NONE); FreeResource (clientResource, RT_NONE);
return BadAlloc; return BadAlloc;
@ -293,7 +293,7 @@ winWindowsWMSendEvent (int type, unsigned int mask, int which, int arg,
ErrorF ("winWindowsWMSendEvent %d %d %d %d, %d %d - %d %d\n", ErrorF ("winWindowsWMSendEvent %d %d %d %d, %d %d - %d %d\n",
type, mask, which, arg, x, y, w, h); type, mask, which, arg, x, y, w, h);
#endif #endif
pHead = (WMEventPtr *) LookupIDByType(eventResource, EventType); pHead = (WMEventPtr *) LookupIDByType(eventResource, eventResourceType);
if (!pHead) if (!pHead)
return; return;
for (pEvent = *pHead; pEvent; pEvent = pEvent->next) for (pEvent = *pHead; pEvent; pEvent = pEvent->next)

View File

@ -5,4 +5,7 @@ endif
if XQUARTZ if XQUARTZ
SUBDIRS += rootless SUBDIRS += rootless
endif endif
if XWIN
SUBDIRS += rootless
endif
DIST_SUBDIRS = damage shadow cw rootless DIST_SUBDIRS = damage shadow cw rootless