/* Message sent with gst_gl_window_send_message */
if (wm_gl != None && event.xclient.message_type == wm_gl) {
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];
gpointer custom_data = (gpointer) event.xclient.data.l[1];
+#endif
if (!custom_cb || !custom_data)
g_debug ("custom cb not initialized\n");
/* message sent with gst_gl_window_quit_loop */
else if (wm_quit_loop != None
&& 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];
gpointer destroy_data = (gpointer) event.xclient.data.l[1];
+#endif
g_debug ("Quit loop message %" G_GUINT64_FORMAT "\n",
(guint64) priv->internal_win_id);
/* make sure last pendings send message calls are executed */
XFlush (priv->device);
while (XCheckTypedEvent (priv->device, ClientMessage, &pending_event)) {
+#if SIZEOF_VOID_P == 8
GstGLWindowCB custom_cb =
- (GstGLWindowCB) pending_event.xclient.data.l[0];
- gpointer custom_data = (gpointer) pending_event.xclient.data.l[1];
-
+ (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];
+ gpointer custom_data = (gpointer) event.xclient.data.l[1];
+#endif
g_debug ("execute last pending custom x events\n");
if (!custom_cb || !custom_data)
event.xclient.message_type =
XInternAtom (priv->disp_send, "WM_QUIT_LOOP", True);;
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[1] = (long) data;
+#endif
XSendEvent (priv->disp_send, priv->internal_win_id, FALSE, NoEventMask,
&event);
event.xclient.message_type =
XInternAtom (priv->disp_send, "WM_GL_WINDOW", True);
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[1] = (long) data;
+#endif
XSendEvent (priv->disp_send, priv->internal_win_id, FALSE, NoEventMask,
&event);