[297/906] Revert "Fix callbacks passed over XEvents on 64 bit architectures"

This reverts commit 280771d09b58617b27201027de0e1194da376e72.
This commit is contained in:
David Schleef 2009-02-10 21:57:08 -08:00 committed by Tim-Philipp Müller
parent babd51c58f
commit 2f0e5b1dc4

View file

@ -626,19 +626,8 @@ gst_gl_window_run_loop (GstGLWindow * window)
/* Message sent with gst_gl_window_send_message */ /* Message sent with gst_gl_window_send_message */
if (wm_gl != None && event.xclient.message_type == wm_gl) { if (wm_gl != None && event.xclient.message_type == wm_gl) {
if (priv->running) { if (priv->running) {
#if SIZEOF_VOID_P == 8
GstGLWindowCB custom_cb =
(GstGLWindowCB) (((event.xclient.
data.l[0] & 0xffffffff) << 32) | (event.xclient.
data.l[1] & 0xffffffff));
gpointer custom_data =
(gpointer) (((event.xclient.
data.l[2] & 0xffffffff) << 32) | (event.xclient.
data.l[3] & 0xffffffff));
#else
GstGLWindowCB custom_cb = (GstGLWindowCB) event.xclient.data.l[0]; GstGLWindowCB custom_cb = (GstGLWindowCB) event.xclient.data.l[0];
gpointer custom_data = (gpointer) event.xclient.data.l[1]; gpointer custom_data = (gpointer) event.xclient.data.l[1];
#endif
if (!custom_cb || !custom_data) if (!custom_cb || !custom_data)
g_debug ("custom cb not initialized\n"); g_debug ("custom cb not initialized\n");
@ -669,19 +658,8 @@ gst_gl_window_run_loop (GstGLWindow * window)
/* message sent with gst_gl_window_quit_loop */ /* message sent with gst_gl_window_quit_loop */
else if (wm_quit_loop != None else if (wm_quit_loop != None
&& event.xclient.message_type == wm_quit_loop) { && event.xclient.message_type == wm_quit_loop) {
#if SIZEOF_VOID_P == 8
GstGLWindowCB destroy_cb =
(GstGLWindowCB) (((event.xclient.
data.l[0] & 0xffffffff) << 32) | (event.xclient.
data.l[1] & 0xffffffff));
gpointer destroy_data =
(gpointer) (((event.xclient.
data.l[2] & 0xffffffff) << 32) | (event.xclient.
data.l[3] & 0xffffffff));
#else
GstGLWindowCB destroy_cb = (GstGLWindowCB) event.xclient.data.l[0]; GstGLWindowCB destroy_cb = (GstGLWindowCB) event.xclient.data.l[0];
gpointer destroy_data = (gpointer) event.xclient.data.l[1]; gpointer destroy_data = (gpointer) event.xclient.data.l[1];
#endif
g_debug ("Quit loop message %" G_GUINT64_FORMAT "\n", g_debug ("Quit loop message %" G_GUINT64_FORMAT "\n",
(guint64) priv->internal_win_id); (guint64) priv->internal_win_id);
@ -692,19 +670,10 @@ gst_gl_window_run_loop (GstGLWindow * window)
/* make sure last pendings send message calls are executed */ /* make sure last pendings send message calls are executed */
XFlush (priv->device); XFlush (priv->device);
while (XCheckTypedEvent (priv->device, ClientMessage, &pending_event)) { while (XCheckTypedEvent (priv->device, ClientMessage, &pending_event)) {
#if SIZEOF_VOID_P == 8
GstGLWindowCB custom_cb = GstGLWindowCB custom_cb =
(GstGLWindowCB) (((event.xclient. (GstGLWindowCB) pending_event.xclient.data.l[0];
data.l[0] & 0xffffffff) << 32) | (event.xclient. gpointer custom_data = (gpointer) pending_event.xclient.data.l[1];
data.l[1] & 0xffffffff));
gpointer custom_data =
(gpointer) (((event.xclient.
data.l[2] & 0xffffffff) << 32) | (event.xclient.
data.l[3] & 0xffffffff));
#else
GstGLWindowCB custom_cb = (GstGLWindowCB) event.xclient.data.l[0];
gpointer custom_data = (gpointer) event.xclient.data.l[1];
#endif
g_debug ("execute last pending custom x events\n"); g_debug ("execute last pending custom x events\n");
if (!custom_cb || !custom_data) if (!custom_cb || !custom_data)
@ -804,15 +773,8 @@ gst_gl_window_quit_loop (GstGLWindow * window, GstGLWindowCB callback,
event.xclient.message_type = event.xclient.message_type =
XInternAtom (priv->disp_send, "WM_QUIT_LOOP", True);; XInternAtom (priv->disp_send, "WM_QUIT_LOOP", True);;
event.xclient.format = 32; event.xclient.format = 32;
#if SIZEOF_VOID_P == 8
event.xclient.data.l[0] = (((long) callback) >> 32) & 0xffffffff;
event.xclient.data.l[1] = (((long) callback)) & 0xffffffff;
event.xclient.data.l[2] = (((long) data) >> 32) & 0xffffffff;
event.xclient.data.l[3] = (((long) data)) & 0xffffffff;
#else
event.xclient.data.l[0] = (long) callback; event.xclient.data.l[0] = (long) callback;
event.xclient.data.l[1] = (long) data; event.xclient.data.l[1] = (long) data;
#endif
XSendEvent (priv->disp_send, priv->internal_win_id, FALSE, NoEventMask, XSendEvent (priv->disp_send, priv->internal_win_id, FALSE, NoEventMask,
&event); &event);
@ -843,15 +805,8 @@ gst_gl_window_send_message (GstGLWindow * window, GstGLWindowCB callback,
event.xclient.message_type = event.xclient.message_type =
XInternAtom (priv->disp_send, "WM_GL_WINDOW", True); XInternAtom (priv->disp_send, "WM_GL_WINDOW", True);
event.xclient.format = 32; event.xclient.format = 32;
#if SIZEOF_VOID_P == 8
event.xclient.data.l[0] = (((long) callback) >> 32) & 0xffffffff;
event.xclient.data.l[1] = (((long) callback)) & 0xffffffff;
event.xclient.data.l[2] = (((long) data) >> 32) & 0xffffffff;
event.xclient.data.l[3] = (((long) data)) & 0xffffffff;
#else
event.xclient.data.l[0] = (long) callback; event.xclient.data.l[0] = (long) callback;
event.xclient.data.l[1] = (long) data; event.xclient.data.l[1] = (long) data;
#endif
XSendEvent (priv->disp_send, priv->internal_win_id, FALSE, NoEventMask, XSendEvent (priv->disp_send, priv->internal_win_id, FALSE, NoEventMask,
&event); &event);