mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-23 08:46:40 +00:00
xvimagesink: init geometry when setting new xid
Don't rely on expose event to query geomentry after new xid is set. Fixes #615647.
This commit is contained in:
parent
b5f0b7c221
commit
3ec87ee221
1 changed files with 12 additions and 0 deletions
|
@ -2789,12 +2789,24 @@ gst_xvimagesink_set_xwindow_id (GstXOverlay * overlay, XID xwindow_id)
|
||||||
GST_VIDEO_SINK_HEIGHT (xvimagesink));
|
GST_VIDEO_SINK_HEIGHT (xvimagesink));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
XWindowAttributes attr;
|
||||||
|
|
||||||
xwindow = g_new0 (GstXWindow, 1);
|
xwindow = g_new0 (GstXWindow, 1);
|
||||||
xwindow->win = xwindow_id;
|
xwindow->win = xwindow_id;
|
||||||
|
|
||||||
/* Set the event we want to receive and create a GC */
|
/* Set the event we want to receive and create a GC */
|
||||||
g_mutex_lock (xvimagesink->x_lock);
|
g_mutex_lock (xvimagesink->x_lock);
|
||||||
|
|
||||||
|
XGetWindowAttributes (xvimagesink->xcontext->disp, xwindow->win, &attr);
|
||||||
|
|
||||||
|
xwindow->width = attr.width;
|
||||||
|
xwindow->height = attr.height;
|
||||||
xwindow->internal = FALSE;
|
xwindow->internal = FALSE;
|
||||||
|
if (!xvimagesink->have_render_rect) {
|
||||||
|
xvimagesink->render_rect.x = xvimagesink->render_rect.y = 0;
|
||||||
|
xvimagesink->render_rect.w = attr.width;
|
||||||
|
xvimagesink->render_rect.h = attr.height;
|
||||||
|
}
|
||||||
if (xvimagesink->handle_events) {
|
if (xvimagesink->handle_events) {
|
||||||
XSelectInput (xvimagesink->xcontext->disp, xwindow->win, ExposureMask |
|
XSelectInput (xvimagesink->xcontext->disp, xwindow->win, ExposureMask |
|
||||||
StructureNotifyMask | PointerMotionMask | KeyPressMask |
|
StructureNotifyMask | PointerMotionMask | KeyPressMask |
|
||||||
|
|
Loading…
Reference in a new issue