diff options
author | Søren Sandmann Pedersen <ssp@src.gnome.org> | 2005-11-27 22:27:26 +0000 |
---|---|---|
committer | Søren Sandmann Pedersen <ssp@src.gnome.org> | 2005-11-27 22:27:26 +0000 |
commit | e74bd216bb128bb0f56678081ae22fa8d1194794 (patch) | |
tree | c16257f319c6315c70ca61a88db99d9c39cb3fbf | |
parent | cbf88f85cab98327ec9bdc6ff0504758893249fc (diff) | |
download | metacity-e74bd216bb128bb0f56678081ae22fa8d1194794.tar.gz |
*** empty log message ***
-rw-r--r-- | src/compositor.c | 150 | ||||
-rw-r--r-- | src/compositor.h | 3 | ||||
-rw-r--r-- | src/display.c | 13 | ||||
-rw-r--r-- | src/screen.c | 4 | ||||
-rw-r--r-- | src/screen.h | 4 | ||||
-rw-r--r-- | src/stack.c | 4 | ||||
-rw-r--r-- | src/window.c | 1 |
7 files changed, 61 insertions, 118 deletions
diff --git a/src/compositor.c b/src/compositor.c index e1ca12dd..d1bdf0d5 100644 --- a/src/compositor.c +++ b/src/compositor.c @@ -57,7 +57,7 @@ struct MetaCompositor { MetaDisplay *display; - + Ws *ws; World *world; @@ -81,7 +81,7 @@ struct MetaCompositor guint debug_updates : 1; GList *ignored_damage; - + WsWindow *glw; }; @@ -100,11 +100,11 @@ meta_compositor_new (MetaDisplay *display) { #ifdef HAVE_COMPOSITE_EXTENSIONS MetaCompositor *compositor; - + compositor = g_new0 (MetaCompositor, 1); - + compositor->ws = ws_new (NULL); - + ws_init_test (compositor->ws); ws_set_ignore_grabs (compositor->ws, TRUE); @@ -237,12 +237,12 @@ draw_windows (MetaScreen *screen, GList *list) { Node *node; - + if (!list) return; - + node = list->data; - + draw_windows (screen, list->next); node->render (node); } @@ -274,10 +274,10 @@ handle_restacking (MetaCompositor *compositor, window_link = g_list_find (screen->compositor_windows, node); above_link = g_list_find (screen->compositor_windows, above); - + if (!window_link || !above_link) return; - + if (window_link == above_link) { /* This can happen if the topmost window is raise above @@ -312,10 +312,9 @@ process_configure_notify (MetaCompositor *compositor, screen = node_get_screen (compositor->display->xdisplay, node); above_window = ws_window_lookup (node->drawable->ws, event->above); - + if (above_window == compositor->glw) { - g_print ("yup\n"); above_node = screen->compositor_windows->data; } else @@ -323,7 +322,7 @@ process_configure_notify (MetaCompositor *compositor, above_node = g_hash_table_lookup (compositor->window_hash, &event->above); } - + handle_restacking (compositor, node, above_node); } #endif /* HAVE_COMPOSITE_EXTENSIONS */ @@ -341,7 +340,7 @@ process_expose (MetaCompositor *compositor, screen = meta_display_screen_for_root (compositor->display, event->window); - if (screen == NULL || screen->root_picture == None) + if (screen == NULL) return; r.x = 0; @@ -367,7 +366,7 @@ process_map (MetaCompositor *compositor, screen = meta_display_screen_for_root (compositor->display, event->event); - if (screen == NULL || screen->root_picture == None) + if (screen == NULL) { meta_topic (META_DEBUG_COMPOSITOR, "MapNotify received on non-root 0x%lx for 0x%lx\n", @@ -422,7 +421,7 @@ process_unmap (MetaCompositor *compositor, screen = meta_display_screen_for_root (compositor->display, event->event); - if (screen == NULL || screen->root_picture == None) + if (screen == NULL) { meta_topic (META_DEBUG_COMPOSITOR, "UnmapNotify received on non-root 0x%lx for 0x%lx\n", @@ -431,7 +430,7 @@ process_unmap (MetaCompositor *compositor, } node = g_hash_table_lookup (compositor->window_hash, - &event->window); + &event->window); if (node != NULL) { drawable_node_set_viewable (node, FALSE); @@ -450,7 +449,7 @@ process_create (MetaCompositor *compositor, screen = meta_display_screen_for_root (compositor->display, event->parent); - if (screen == NULL || screen->root_picture == None) + if (screen == NULL) { meta_topic (META_DEBUG_COMPOSITOR, "CreateNotify received on non-root 0x%lx for 0x%lx\n", @@ -489,7 +488,7 @@ process_destroy (MetaCompositor *compositor, screen = meta_display_screen_for_root (compositor->display, event->event); - if (screen == NULL || screen->root_picture == None) + if (screen == NULL) { meta_topic (META_DEBUG_COMPOSITOR, "DestroyNotify received on non-root 0x%lx for 0x%lx\n", @@ -522,7 +521,7 @@ process_reparent (MetaCompositor *compositor, g_print ("reparent\n"); - if (event_screen == NULL || event_screen->root_picture == None) + if (event_screen == NULL) { meta_topic (META_DEBUG_COMPOSITOR, "ReparentNotify received on non-root 0x%lx for 0x%lx\n", @@ -659,7 +658,7 @@ meta_compositor_add_window (MetaCompositor *compositor, } drawable = (WsDrawable *)ws_window_lookup (compositor->ws, xwindow); - + if (ws_window_query_input_only ((WsWindow *)drawable) || drawable == (WsDrawable *)compositor->glw) { @@ -735,33 +734,33 @@ static gboolean update (gpointer data) { Info *info = data; - + MetaScreen *screen = info->screen; WsWindow *gl_window = info->window; - + glMatrixMode (GL_MODELVIEW); glLoadIdentity (); gluOrtho2D (0, 1.0, 0.0, 1.0); - + ws_window_raise (gl_window); glClearColor (0.0, 0.5, 0.5, 0.0); glClear (GL_COLOR_BUFFER_BIT); - + glColor4f (1.0, 0.0, 0.0, 1.0); - + glDisable (GL_TEXTURE_2D); glBegin (GL_QUADS); - + glVertex2f (0.2, 0.2); glVertex2f (0.2, 0.4); glVertex2f (0.4, 0.4); glVertex2f (0.4, 0.2); glEnd (); - - + + glEnable (GL_TEXTURE_2D); draw_windows (screen, screen->compositor_windows); @@ -783,65 +782,38 @@ meta_compositor_manage_screen (MetaCompositor *compositor, MetaScreen *screen) { #ifdef HAVE_COMPOSITE_EXTENSIONS - XRenderPictureAttributes pa; + WsScreen *ws_screen = ws_screen_get_from_number ( + compositor->ws, screen->number); + WsWindow *root = ws_screen_get_root_window (ws_screen); + Info *info; + WsRegion *region; - if (!compositor->enabled) - return; /* no extension */ - /* FIXME we need to handle root window resize by recreating the - * root_picture - */ + compositor->glw = ws_window_new_gl (root); - g_assert (screen->root_picture == None); + ws_init_composite (compositor->ws); + ws_init_damage (compositor->ws); + ws_init_fixes (compositor->ws); - /* FIMXE: This shouldn't be needed for the gl compositor, but it is. Various stuff gets - * confused if root_picture is None - */ - pa.subwindow_mode = IncludeInferiors; - - screen->root_picture = - XRenderCreatePicture (compositor->display->xdisplay, - screen->xroot, - XRenderFindVisualFormat (compositor->display->xdisplay, - DefaultVisual (compositor->display->xdisplay, - screen->number)), - CPSubwindowMode, - &pa); - - { - WsScreen *ws_screen = ws_screen_get_from_number ( - compositor->ws, screen->number); - WsWindow *root = ws_screen_get_root_window (ws_screen); - Info *info; - WsRegion *region; - - - compositor->glw = ws_window_new_gl (root); - - ws_init_composite (compositor->ws); - ws_init_damage (compositor->ws); - ws_init_fixes (compositor->ws); - - ws_window_redirect_subwindows (root); - ws_window_set_override_redirect (compositor->glw, TRUE); - ws_window_unredirect (compositor->glw); - - region = ws_region_new (compositor->ws); - ws_window_set_input_shape (compositor->glw, region); - ws_region_unref (region); - - ws_window_map (compositor->glw); - - ws_sync (compositor->ws); - - info = g_new (Info, 1); - info->window = compositor->glw; - info->screen = screen; - - g_idle_add (update, info); - - the_info = info; - } + ws_window_redirect_subwindows (root); + ws_window_set_override_redirect (compositor->glw, TRUE); + ws_window_unredirect (compositor->glw); + + region = ws_region_new (compositor->ws); + ws_window_set_input_shape (compositor->glw, region); + ws_region_unref (region); + + ws_window_map (compositor->glw); + + ws_sync (compositor->ws); + + info = g_new (Info, 1); + info->window = compositor->glw; + info->screen = screen; + + g_idle_add (update, info); + + the_info = info; #endif } @@ -853,16 +825,6 @@ meta_compositor_unmanage_screen (MetaCompositor *compositor, if (!compositor->enabled) return; /* no extension */ - XRenderFreePicture (screen->display->xdisplay, - screen->root_picture); - screen->root_picture = None; - XRenderFreePicture (screen->display->xdisplay, - screen->trans_picture); - screen->trans_picture = None; - XFreePixmap (screen->display->xdisplay, - screen->trans_pixmap); - screen->trans_pixmap = None; - while (screen->compositor_windows != NULL) { DrawableNode *node = screen->compositor_windows->data; diff --git a/src/compositor.h b/src/compositor.h index 1426a314..75a8b07d 100644 --- a/src/compositor.h +++ b/src/compositor.h @@ -45,9 +45,6 @@ void meta_compositor_manage_screen (MetaCompositor *compositor, void meta_compositor_unmanage_screen (MetaCompositor *compositor, MetaScreen *screen); -void meta_compositor_damage_window (MetaCompositor *compositor, - MetaWindow *window); - void meta_compositor_stop_compositing (MetaCompositor *compositor, MetaWindow *window); void meta_compositor_start_compositing (MetaCompositor *compositor, diff --git a/src/display.c b/src/display.c index a70f8e67..5da30894 100644 --- a/src/display.c +++ b/src/display.c @@ -3381,12 +3381,6 @@ meta_display_begin_grab_op (MetaDisplay *display, if (display->grab_window) { meta_window_refresh_resize_popup (display->grab_window); - - /* repaint window in case we draw it differently - * when grabbed - */ - meta_compositor_damage_window (display->compositor, - display->grab_window); } return TRUE; @@ -3468,13 +3462,6 @@ meta_display_end_grab_op (MetaDisplay *display, display->grab_sync_request_alarm = None; } #endif /* HAVE_XSYNC */ - - /* repaint window in case the grab op drew it in a - * nonstandard way such as transparent or wireframe - */ - if (display->grab_window != NULL) - meta_compositor_damage_window (display->compositor, - display->grab_window); display->grab_window = NULL; display->grab_screen = NULL; diff --git a/src/screen.c b/src/screen.c index 47cb6a26..016afa81 100644 --- a/src/screen.c +++ b/src/screen.c @@ -541,10 +541,6 @@ meta_screen_new (MetaDisplay *display, screen->starting_corner = META_SCREEN_TOPLEFT; screen->compositor_windows = NULL; - screen->damage_region = None; - screen->root_picture = None; - screen->trans_pixmap = None; - screen->trans_picture = None; { XFontStruct *font_info; diff --git a/src/screen.h b/src/screen.h index 96ad9c42..54241501 100644 --- a/src/screen.h +++ b/src/screen.h @@ -117,10 +117,6 @@ struct _MetaScreen /* Managed by compositor.c; top of stack is first in list */ GList *compositor_windows; - XID root_picture; - XID damage_region; - XID trans_pixmap; - XID trans_picture; }; MetaScreen* meta_screen_new (MetaDisplay *display, diff --git a/src/stack.c b/src/stack.c index f9ab1129..c933d24d 100644 --- a/src/stack.c +++ b/src/stack.c @@ -956,6 +956,7 @@ raise_window_relative_to_managed_windows (MetaScreen *screen, meta_error_trap_push_with_return (screen->display); + g_print ("querytree\n"); XQueryTree (screen->display->xdisplay, screen->xroot, &ignored1, &ignored2, &children, &n_children); @@ -1001,6 +1002,7 @@ raise_window_relative_to_managed_windows (MetaScreen *screen, changes.stack_mode = Above; meta_error_trap_push (screen->display); + g_print ("relative configurewindow\n"); XConfigureWindow (screen->display->xdisplay, xwindow, CWSibling | CWStackMode, @@ -1163,6 +1165,7 @@ meta_stack_sync_to_server (MetaStack *stack) meta_topic (META_DEBUG_STACK, "Placing window 0x%lx below 0x%lx\n", *newp, last_window); + g_print ("configurewindow\n"); XConfigureWindow (stack->screen->display->xdisplay, *newp, CWSibling | CWStackMode, @@ -1185,6 +1188,7 @@ meta_stack_sync_to_server (MetaStack *stack) */ if (newp != new_stack) --newp; + g_print ("restackwindows\n"); XRestackWindows (stack->screen->display->xdisplay, (Window *) newp, new_end - newp); } diff --git a/src/window.c b/src/window.c index 4624157a..33b2466b 100644 --- a/src/window.c +++ b/src/window.c @@ -2838,6 +2838,7 @@ meta_window_move_resize_internal (MetaWindow *window, } #endif + g_print ("window configurewindow\n"); XConfigureWindow (window->display->xdisplay, window->xwindow, mask, |