summaryrefslogtreecommitdiff
path: root/magnifier
diff options
context:
space:
mode:
authorCarlos Eduardo Rodrigues DiĆ³genes <carlosd@src.gnome.org>2007-10-04 01:38:29 +0000
committerCarlos Eduardo Rodrigues DiĆ³genes <carlosd@src.gnome.org>2007-10-04 01:38:29 +0000
commitf69b008dbcd675e3aaa3733ad208a04616b9d3f9 (patch)
treec6f206f26b65dc63c45daddd728a3529058c523e /magnifier
parenta6599e371cb53e5c5449d743b7d9d48345830261 (diff)
corrected wrong syntax
svn path=/trunk/; revision=629
Diffstat (limited to 'magnifier')
-rw-r--r--magnifier/magnifier.c10
-rw-r--r--magnifier/x11/gmag-damage.c27
-rw-r--r--magnifier/x11/gmag-damage.h1
-rw-r--r--magnifier/x11/gmag-graphical-server.c12
4 files changed, 49 insertions, 1 deletions
diff --git a/magnifier/magnifier.c b/magnifier/magnifier.c
index 0d3899d..2956ee2 100644
--- a/magnifier/magnifier.c
+++ b/magnifier/magnifier.c
@@ -26,6 +26,7 @@
#include "zoom-region.h"
#include "zoom-region-private.h"
#include "gmag-cursor.h"
+#include "gmag-damage.h"
#include "gmag-graphical-server.h"
#include "GNOME_Magnifier.h"
@@ -1388,6 +1389,14 @@ impl_magnifier_dispose (PortableServer_Servant servant,
}
static void
+impl_magnifier_reference_fetched (PortableServer_Servant servant,
+ const CORBA_boolean value,
+ CORBA_Environment *ev)
+{
+ gmag_damage_can_exit ((gboolean) value);
+}
+
+static void
magnifier_class_init (MagnifierClass *klass)
{
GObjectClass * object_class = (GObjectClass *) klass;
@@ -1405,6 +1414,7 @@ magnifier_class_init (MagnifierClass *klass)
epv->createZoomRegion = impl_magnifier_create_zoom_region;
epv->addZoomRegion = impl_magnifier_add_zoom_region;
epv->clearAllZoomRegions = impl_magnifier_clear_all_zoom_regions;
+ epv->referenceFetched = impl_magnifier_reference_fetched;
epv->dispose = impl_magnifier_dispose;
}
diff --git a/magnifier/x11/gmag-damage.c b/magnifier/x11/gmag-damage.c
index 86165e4..58e92b8 100644
--- a/magnifier/x11/gmag-damage.c
+++ b/magnifier/x11/gmag-damage.c
@@ -27,6 +27,9 @@
#include <X11/Xlib.h>
#include <X11/extensions/Xdamage.h>
+#include <sys/ipc.h>
+#include <sys/shm.h>
+#include <X11/extensions/XShm.h>
#include <gdk/gdkx.h>
@@ -39,6 +42,7 @@ static Window root_window;
static Damage root_damage;
static XserverRegion tmp_region;
static DamageHandlerFunc gmag_damage_notify_handler;
+static gboolean can_exit = FALSE;
static void
gmag_damage_notify_handler (XEvent *ev)
@@ -74,9 +78,17 @@ gmag_damage_notify_handler (XEvent *ev)
}
void
+gmag_damage_can_exit (gboolean value)
+{
+ can_exit = value;
+}
+
+void
gmag_damage_init (Magnifier *magnifier, Display *dpy_conn)
{
gint event, error;
+ gint scr = 0, root_w, root_h;
+ FILE *f;
if (!XDamageQueryExtension (dpy_conn, &event, &error)) {
g_warning ("Damage extension not currently active.\n");
@@ -86,7 +98,14 @@ gmag_damage_init (Magnifier *magnifier, Display *dpy_conn)
dpy = dpy_conn;
mag_ref = magnifier;
tmp_region = XFixesCreateRegion (dpy, 0, 0);
- root_window = GDK_WINDOW_XWINDOW (mag_ref->priv->root);
+
+ gdk_drawable_get_size (magnifier->priv->root, &root_w,
+ &root_h);
+ magnifier->priv->source_drawable = gdk_pixmap_new (
+ magnifier->priv->root, root_w, root_h, -1);
+ gdk_flush ();
+
+ root_window = GDK_WINDOW_XWINDOW (mag_ref->priv->source_drawable);
root_damage = XDamageCreate (dpy, root_window,
XDamageReportDeltaRectangles);
/* I don't know why, but without this XDamageSubtract
@@ -97,6 +116,12 @@ gmag_damage_init (Magnifier *magnifier, Display *dpy_conn)
XDamageSubtract (dpy, root_damage, None, None);
gmag_gs_set_damage_handler_func (gmag_damage_notify_handler);
+ f = fopen ("/tmp/source-drawable.txt", "w");
+ fprintf (f, "%d\n", (int) GDK_WINDOW_XWINDOW (mag_ref->priv->source_drawable));
+ fclose (f);
+
g_message ("added event source to damage connection");
+
+ while (!can_exit);
}
}
diff --git a/magnifier/x11/gmag-damage.h b/magnifier/x11/gmag-damage.h
index c246d8f..1c95719 100644
--- a/magnifier/x11/gmag-damage.h
+++ b/magnifier/x11/gmag-damage.h
@@ -29,6 +29,7 @@
#include <X11/Xlib.h>
void gmag_damage_init (Magnifier *magnifier, Display *dpy_conn);
+void gmag_damage_can_exit (gboolean value);
#endif /* GMAG_DAMAGE_H_ */
diff --git a/magnifier/x11/gmag-graphical-server.c b/magnifier/x11/gmag-graphical-server.c
index 6761aed..de89dc5 100644
--- a/magnifier/x11/gmag-graphical-server.c
+++ b/magnifier/x11/gmag-graphical-server.c
@@ -317,6 +317,12 @@ gmag_gs_magnifier_realize (GtkWidget *widget)
Atom wm_type_atoms[1];
Atom net_wm_window_type;
GdkDisplay *target_display = gdk_drawable_get_display (widget->window);
+
+ FILE *f;
+
+ f = fopen ("/tmp/magnifier-window.txt", "w");
+ fprintf (f, "%d\n", (int) GDK_WINDOW_XWINDOW (widget->window));
+ fclose (f);
static gboolean initialized = FALSE;
@@ -532,6 +538,12 @@ gmag_gs_client_init (Magnifier *magnifier)
* damage notify handler, more suitable to the composite task. I think
* that this leave the logic more simple.
*/
+
+ gmag_damage_init (magnifier, dpy);
+ g_setenv ("MAGNIFIER_IGNORE_COMPOSITE", "1", FALSE);
+
+ return;
+
if (!use_compositor) {
gmag_damage_init (magnifier, dpy);
g_setenv ("MAGNIFIER_IGNORE_COMPOSITE", "1", FALSE);