gint device_height;
gint connection;
XVisualInfo *visual_info;
+ Window parent;
Display *disp_send;
g_debug ("gl window finalizing\n");
+ priv->parent = 0;
+
XUnmapWindow (priv->device, priv->internal_win_id);
ret = glXMakeCurrent (priv->device, None, NULL);
XCloseDisplay (priv->disp_send);
+ /*XAddToSaveSet (display, w)
+ Display *display;
+ Window w;*/
+
g_debug ("display closed\n");
if (priv->cond_send_message)
priv->cond_send_message = g_cond_new ();
priv->running = TRUE;
priv->visible = FALSE;
+ priv->parent = 0;
g_mutex_lock (priv->x_lock);
g_debug ("visual info bits_per_rgb: %d\n", priv->visual_info->bits_per_rgb);
win_attr.event_mask = StructureNotifyMask | ExposureMask | VisibilityChangeMask;
+ win_attr.do_not_propagate_mask = NoEventMask;
win_attr.background_pixmap = None;
win_attr.background_pixel = 0;
g_mutex_lock (priv->x_lock);
- XGetWindowAttributes (priv->disp_send, (Window) id, &attr);
+ priv->parent = (Window) id;
+
+ XGetWindowAttributes (priv->disp_send, priv->parent, &attr);
XResizeWindow (priv->disp_send, priv->internal_win_id, attr.width, attr.height);
- XReparentWindow (priv->disp_send, priv->internal_win_id, (Window) id, attr.x, attr.y);
+ XReparentWindow (priv->disp_send, priv->internal_win_id, priv->parent, attr.x, attr.y);
XSync (priv->disp_send, FALSE);
XGetWindowAttributes (priv->disp_send, priv->internal_win_id, &attr);
+ if (priv->parent)
+ {
+ XWindowAttributes attr_parent;
+ XGetWindowAttributes (priv->disp_send, priv->parent, &attr_parent);
+
+ if (attr.width != attr_parent.width || attr.height != attr_parent.height)
+ {
+ XResizeWindow (priv->disp_send, priv->internal_win_id, attr_parent.width, attr_parent.height);
+ XSync (priv->disp_send, FALSE);
+
+ attr.width = attr_parent.width;
+ attr.height = attr_parent.height;
+ }
+ }
+
event.xexpose.type = Expose;
event.xexpose.send_event = TRUE;
event.xexpose.display = priv->disp_send;
}
default:
+ g_print("unknow\n");
break;
}// switch