summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSøren Sandmann Pedersen <ssp@src.gnome.org>2005-11-27 22:27:26 +0000
committerSøren Sandmann Pedersen <ssp@src.gnome.org>2005-11-27 22:27:26 +0000
commite74bd216bb128bb0f56678081ae22fa8d1194794 (patch)
treec16257f319c6315c70ca61a88db99d9c39cb3fbf
parentcbf88f85cab98327ec9bdc6ff0504758893249fc (diff)
downloadmetacity-e74bd216bb128bb0f56678081ae22fa8d1194794.tar.gz
*** empty log message ***
-rw-r--r--src/compositor.c150
-rw-r--r--src/compositor.h3
-rw-r--r--src/display.c13
-rw-r--r--src/screen.c4
-rw-r--r--src/screen.h4
-rw-r--r--src/stack.c4
-rw-r--r--src/window.c1
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,