diff options
Diffstat (limited to 'xorg-server/miext/rootless/rootlessWindow.c')
-rw-r--r-- | xorg-server/miext/rootless/rootlessWindow.c | 76 |
1 files changed, 12 insertions, 64 deletions
diff --git a/xorg-server/miext/rootless/rootlessWindow.c b/xorg-server/miext/rootless/rootlessWindow.c index d43301fc1..53209565d 100644 --- a/xorg-server/miext/rootless/rootlessWindow.c +++ b/xorg-server/miext/rootless/rootlessWindow.c @@ -36,15 +36,15 @@ #include <stddef.h> /* For NULL */ #include <limits.h> /* For CHAR_BIT */ #include <assert.h> -#ifdef __APPLE__ -//#include <X11/Xlib.h> #include <X11/Xatom.h> +#ifdef __APPLE__ +#include <Xplugin.h> #include "mi.h" #include "pixmapstr.h" #include "windowstr.h" -#include <Xplugin.h> //#include <X11/extensions/applewm.h> extern int darwinMainScreenX, darwinMainScreenY; +extern Bool no_configure_window; #endif #include "fb.h" @@ -61,8 +61,6 @@ extern int darwinMainScreenX, darwinMainScreenY; #define SCREEN_TO_GLOBAL_Y 0 #endif -#define MAKE_WINDOW_ID(x) ((xp_window_id)((size_t)(x))) - #define DEFINE_ATOM_HELPER(func,atom_name) \ static Atom func (void) { \ static unsigned int generation = 0; \ @@ -74,34 +72,15 @@ extern int darwinMainScreenX, darwinMainScreenY; return atom; \ } -DEFINE_ATOM_HELPER (xa_native_screen_origin, "_NATIVE_SCREEN_ORIGIN") DEFINE_ATOM_HELPER (xa_native_window_id, "_NATIVE_WINDOW_ID") -DEFINE_ATOM_HELPER (xa_apple_no_order_in, "_APPLE_NO_ORDER_IN") -static Bool no_configure_window; static Bool windows_hidden; // TODO - abstract xp functions -static inline int -configure_window (xp_window_id id, unsigned int mask, - const xp_window_changes *values) -{ - if (!no_configure_window) - return xp_configure_window (id, mask, values); - else - return XP_Success; -} - -/*static inline unsigned long -current_time_in_seconds (void) -{ - unsigned long t = 0; - - t += currentTime.milliseconds / 1000; - t += currentTime.months * 4294967; +#ifdef __APPLE__ - return t; - } */ +// XXX: identical to x_cvt_vptr_to_uint ? +#define MAKE_WINDOW_ID(x) ((xp_window_id)((size_t)(x))) void RootlessNativeWindowStateChanged (WindowPtr pWin, unsigned int state) @@ -153,25 +132,7 @@ void RootlessNativeWindowMoved (WindowPtr pWin) { no_configure_window = FALSE; } -/* Updates the _NATIVE_SCREEN_ORIGIN property on the given root window. */ -static void -set_screen_origin (WindowPtr pWin) -{ - long data[2]; - - if (!IsRoot (pWin)) - return; - - /* FIXME: move this to an extension? */ - - data[0] = (dixScreenOrigins[pWin->drawable.pScreen->myNum].x - + darwinMainScreenX); - data[1] = (dixScreenOrigins[pWin->drawable.pScreen->myNum].y - + darwinMainScreenY); - - dixChangeWindowProperty(serverClient, pWin, xa_native_screen_origin(), - XA_INTEGER, 32, PropModeReplace, 2, data, TRUE); -} +#endif /* __APPLE__ */ /* * RootlessCreateWindow @@ -437,13 +398,6 @@ RootlessInitializeFrame(WindowPtr pWin, RootlessWindowRec *winRec) #endif } - -Bool -RootlessColormapCallback (void *data, int first_color, int n_colors, uint32_t *colors) -{ - return (RootlessResolveColormap (data, first_color, n_colors, colors) ? XP_Success : XP_BadMatch); -} - /* * RootlessEnsureFrame * Make sure the given window is framed. If the window doesn't have a @@ -1482,19 +1436,15 @@ void RootlessFlushWindowColormap (WindowPtr pWin) { RootlessWindowRec *winRec = WINREC (pWin); - xp_window_changes wc; + ScreenPtr pScreen = pWin->drawable.pScreen; if (winRec == NULL) return; RootlessStopDrawing (pWin, FALSE); - /* This is how we tell xp that the colormap may have changed. */ - - wc.colormap = RootlessColormapCallback; - wc.colormap_data = pWin->drawable.pScreen; - - configure_window (MAKE_WINDOW_ID(winRec->wid), XP_COLORMAP, &wc); + if (SCREENREC(pScreen)->imp->UpdateColormap) + SCREENREC(pScreen)->imp->UpdateColormap(winRec->wid, pScreen); } /* @@ -1617,7 +1567,6 @@ RootlessHideAllWindows (void) ScreenPtr pScreen; WindowPtr pWin; RootlessWindowRec *winRec; - xp_window_changes wc; if (windows_hidden) return; @@ -1641,9 +1590,8 @@ RootlessHideAllWindows (void) winRec = WINREC (pWin); if (winRec != NULL) { - wc.stack_mode = XP_UNMAPPED; - wc.sibling = 0; - configure_window (MAKE_WINDOW_ID(winRec->wid), XP_STACKING, &wc); + if (SCREENREC(pScreen)->imp->HideWindow) + SCREENREC(pScreen)->imp->HideWindow(winRec->wid); } } } |