/* * Called after the window associated with a frame has been switched * to a new top-level parent. */ void xprSwitchWindow(RootlessWindowPtr pFrame, WindowPtr oldWin) { DeleteProperty(oldWin, xa_native_window_id()); xprSetNativeProperty(pFrame); }
/* * Called after the window associated with a frame has been switched * to a new top-level parent. */ static void xprSwitchWindow(RootlessWindowPtr pFrame, WindowPtr oldWin) { DeleteProperty(serverClient, oldWin, xa_native_window_id()); TA_SERVER(); xprSetNativeProperty(pFrame); }
/* * Create and display a new frame. */ static Bool xprCreateFrame(RootlessWindowPtr pFrame, ScreenPtr pScreen, int newX, int newY, RegionPtr pShape) { WindowPtr pWin = pFrame->win; xp_window_changes wc; unsigned int mask = 0; xp_error err; TA_SERVER(); wc.x = newX; wc.y = newY; wc.width = pFrame->width; wc.height = pFrame->height; wc.bit_gravity = XP_GRAVITY_NONE; mask |= XP_BOUNDS; if (pWin->drawable.depth == 8) { wc.depth = XP_DEPTH_INDEX8; wc.colormap = xprColormapCallback; wc.colormap_data = pScreen; mask |= XP_COLORMAP; } else if (pWin->drawable.depth == 15) wc.depth = XP_DEPTH_RGB555; else if (pWin->drawable.depth == 24) wc.depth = XP_DEPTH_ARGB8888; else wc.depth = XP_DEPTH_NIL; mask |= XP_DEPTH; if (pShape != NULL) { wc.shape_nrects = RegionNumRects(pShape); wc.shape_rects = RegionRects(pShape); wc.shape_tx = wc.shape_ty = 0; mask |= XP_SHAPE; } pFrame->level = !IsRoot (pWin) ? AppleWMWindowLevelNormal : AppleWMNumWindowLevels; if(XQuartzIsRootless) wc.window_level = normal_window_levels[pFrame->level]; else if(XQuartzShieldingWindowLevel) wc.window_level = XQuartzShieldingWindowLevel + 1; else wc.window_level = rooted_window_levels[pFrame->level]; mask |= XP_WINDOW_LEVEL; err = xp_create_window(mask, &wc, (xp_window_id *) &pFrame->wid); if (err != Success) { return FALSE; } if (window_hash == NULL) { window_hash = x_hash_table_new(NULL, NULL, NULL, NULL); pthread_mutex_init(&window_hash_mutex, NULL); } pthread_mutex_lock(&window_hash_mutex); x_hash_table_insert(window_hash, pFrame->wid, pFrame); pthread_mutex_unlock(&window_hash_mutex); xprSetNativeProperty(pFrame); return TRUE; }
/* * Create and display a new frame. */ Bool xprCreateFrame(RootlessWindowPtr pFrame, ScreenPtr pScreen, int newX, int newY, RegionPtr pShape) { WindowPtr pWin = pFrame->win; xp_window_changes wc; unsigned int mask = 0; xp_error err; wc.x = newX; wc.y = newY; wc.width = pFrame->width; wc.height = pFrame->height; wc.bit_gravity = XP_GRAVITY_NONE; mask |= XP_BOUNDS; if (pWin->drawable.depth == 8) { wc.depth = XP_DEPTH_INDEX8; #if 0 wc.colormap = xprColormapCallback; wc.colormap_data = pScreen; mask |= XP_COLORMAP; #endif } else if (pWin->drawable.depth == 15) wc.depth = XP_DEPTH_RGB555; else if (pWin->drawable.depth == 24) wc.depth = XP_DEPTH_ARGB8888; else wc.depth = XP_DEPTH_NIL; mask |= XP_DEPTH; if (pShape != NULL) { wc.shape_nrects = REGION_NUM_RECTS(pShape); wc.shape_rects = REGION_RECTS(pShape); wc.shape_tx = wc.shape_ty = 0; mask |= XP_SHAPE; } err = xp_create_window(mask, &wc, (xp_window_id *) &pFrame->wid); if (err != Success) { return FALSE; } if (window_hash == NULL) { window_hash = x_hash_table_new(NULL, NULL, NULL, NULL); pthread_mutex_init(&window_hash_mutex, NULL); } pthread_mutex_lock(&window_hash_mutex); x_hash_table_insert(window_hash, pFrame->wid, pFrame); pthread_mutex_unlock(&window_hash_mutex); xprSetNativeProperty(pFrame); return TRUE; }