summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHavoc Pennington <hp@redhat.com>2003-11-24 23:00:52 +0000
committerHavoc Pennington <hp@src.gnome.org>2003-11-24 23:00:52 +0000
commit03bbe3de171e61bc7b6cfa4beb364e2436b3a28e (patch)
tree44444a30b200fb5ffa3ee636755928dd5baad8a7
parent47a1c285c70caa7f88f3360d7aefc8f671ec2237 (diff)
downloadmetacity-03bbe3de171e61bc7b6cfa4beb364e2436b3a28e.tar.gz
fix the extension checks
2003-11-24 Havoc Pennington <hp@redhat.com> * src/compositor.c (meta_compositor_new): fix the extension checks
-rw-r--r--ChangeLog4
-rw-r--r--src/Makefile.am2
-rw-r--r--src/compositor.c21
-rw-r--r--src/display.c16
-rw-r--r--src/keybindings.c7
-rw-r--r--src/main.c5
-rw-r--r--src/window.c3
7 files changed, 51 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index bc4b9a1a..86b5edff 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
2003-11-24 Havoc Pennington <hp@redhat.com>
+ * src/compositor.c (meta_compositor_new): fix the extension checks
+
+2003-11-24 Havoc Pennington <hp@redhat.com>
+
* src/iconcache.c (meta_icon_cache_init): init prev_mask field
* src/window.c (meta_window_new_with_attrs): init xgroup_leader
diff --git a/src/Makefile.am b/src/Makefile.am
index 391a79d3..ffaecae7 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -31,6 +31,8 @@ metacity_SOURCES= \
errors.h \
eventqueue.c \
eventqueue.h \
+ expocity.c \
+ expocity.h \
fixedtip.c \
fixedtip.h \
frame.c \
diff --git a/src/compositor.c b/src/compositor.c
index 2e8c087b..d10ee77c 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -84,6 +84,10 @@ struct MetaCompositor
guint repair_idle;
guint enabled : 1;
+ guint have_composite : 1;
+ guint have_damage : 1;
+ guint have_fixes : 1;
+ guint have_render : 1;
};
#ifdef HAVE_COMPOSITE_EXTENSIONS
@@ -123,8 +127,9 @@ meta_compositor_new (MetaDisplay *display)
{
compositor->composite_event_base = 0;
compositor->composite_error_base = 0;
- meta_verbose ("XCompositeQueryExtension() returned FALSE\n");
}
+ else
+ compositor->have_composite = TRUE;
meta_verbose ("Composite extension event base %d error base %d\n",
compositor->composite_event_base,
@@ -137,6 +142,8 @@ meta_compositor_new (MetaDisplay *display)
compositor->damage_event_base = 0;
compositor->damage_error_base = 0;
}
+ else
+ compositor->have_damage = TRUE;
meta_verbose ("Damage extension event base %d error base %d\n",
compositor->damage_event_base,
@@ -149,6 +156,8 @@ meta_compositor_new (MetaDisplay *display)
compositor->fixes_event_base = 0;
compositor->fixes_error_base = 0;
}
+ else
+ compositor->have_fixes = TRUE;
meta_verbose ("Fixes extension event base %d error base %d\n",
compositor->fixes_event_base,
@@ -161,15 +170,17 @@ meta_compositor_new (MetaDisplay *display)
compositor->render_event_base = 0;
compositor->render_error_base = 0;
}
+ else
+ compositor->have_render = TRUE;
meta_verbose ("Render extension event base %d error base %d\n",
compositor->render_event_base,
compositor->render_error_base);
- if (compositor->composite_event_base == 0 ||
- compositor->fixes_event_base == 0 ||
- compositor->render_event_base == 0 ||
- compositor->damage_event_base == 0)
+ if (!(compositor->have_composite &&
+ compositor->have_fixes &&
+ compositor->have_render &&
+ compositor->have_damage))
{
meta_verbose ("Failed to find all extensions needed for compositing manager, disabling compositing manager\n");
g_assert (!compositor->enabled);
diff --git a/src/display.c b/src/display.c
index bbfba65b..d21ec79d 100644
--- a/src/display.c
+++ b/src/display.c
@@ -56,6 +56,8 @@
#endif
#include <string.h>
+#include "expocity.h"
+
#define USE_GDK_DISPLAY
typedef struct
@@ -1321,7 +1323,19 @@ event_callback (XEvent *event,
meta_compositor_process_event (display->compositor,
event,
window);
-
+
+ /* these are the window events at which expocity updates the thumbnail image
+ of the window */
+ switch (event->type)
+ {
+ case CreateNotify:
+ case ButtonRelease:
+ case KeyRelease:
+ case FocusIn:
+ case FocusOut:
+ expocity_grab_window(window);
+ }
+
switch (event->type)
{
case KeyPress:
diff --git a/src/keybindings.c b/src/keybindings.c
index 921736e3..81ca5019 100644
--- a/src/keybindings.c
+++ b/src/keybindings.c
@@ -29,6 +29,8 @@
#include "prefs.h"
#include "effects.h"
+#include "expocity.h"
+
#include <X11/keysym.h>
#include <string.h>
#include <stdio.h>
@@ -2912,7 +2914,10 @@ do_choose_window (MetaDisplay *display,
{
MetaTabList type;
MetaWindow *initial_selection;
-
+
+ expocity_run(display, screen);
+ return;
+
type = GPOINTER_TO_INT (binding->handler->data);
meta_topic (META_DEBUG_KEYBINDINGS,
diff --git a/src/main.c b/src/main.c
index ef8218be..ffb4aa0b 100644
--- a/src/main.c
+++ b/src/main.c
@@ -28,6 +28,8 @@
#include "session.h"
#include "prefs.h"
+#include "expocity.h"
+
#include <glib-object.h>
#include <gmodule.h>
#ifdef HAVE_GCONF
@@ -389,6 +391,9 @@ main (int argc, char **argv)
/* must be after UI init so we can override GDK handlers */
meta_errors_init ();
+ /* initialize the expocity addon */
+ expocity_init();
+
#if 1
g_log_set_handler (NULL,
G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION,
diff --git a/src/window.c b/src/window.c
index 3a01d27a..d73a86f0 100644
--- a/src/window.c
+++ b/src/window.c
@@ -40,6 +40,8 @@
#include "window-props.h"
#include "constraints.h"
+#include "expocity.h"
+
#include <X11/Xatom.h>
#include <string.h>
@@ -1043,6 +1045,7 @@ meta_window_free (MetaWindow *window)
meta_icon_cache_free (&window->icon_cache);
+ expocity_free_window (window);
g_free (window->sm_client_id);
g_free (window->wm_client_machine);
g_free (window->startup_id);