mi-preview: use ensure_native() in realized()
This fixes X crashers at startup when preparing the overlay.
This commit is contained in:
parent
079745094c
commit
09600c8fb2
@ -506,9 +506,12 @@ public class MediaInfo.Info : Box
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void on_element_sync_message (Gst.Bus bus, Message message) {
|
private void on_element_sync_message (Gst.Bus bus, Message message) {
|
||||||
if (Gst.Video.is_video_overlay_prepare_window_handle_message (message)) {
|
if (Video.is_video_overlay_prepare_window_handle_message (message)) {
|
||||||
|
Gdk.Window window = preview.get_window ();
|
||||||
|
debug ("prepare overlay: %p", window);
|
||||||
overlay = message.src as Gst.Video.Overlay;
|
overlay = message.src as Gst.Video.Overlay;
|
||||||
overlay.set_window_handle ((uint *)Gdk.X11Window.get_xid (preview.get_window ()));
|
overlay.set_window_handle ((uint *)Gdk.X11Window.get_xid (window));
|
||||||
|
debug ("prepared overlay");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -116,6 +116,13 @@ public class MediaInfo.Preview : DrawingArea {
|
|||||||
alloc.x, alloc.y, alloc_width, alloc_height);
|
alloc.x, alloc.y, alloc_width, alloc_height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void realize () {
|
||||||
|
base.realize();
|
||||||
|
debug ("realize");
|
||||||
|
if (!get_window ().ensure_native ())
|
||||||
|
error ("Couldn't create native window needed for GstVideoOverlay!");
|
||||||
|
}
|
||||||
|
|
||||||
public override bool draw (Cairo.Context cr) {
|
public override bool draw (Cairo.Context cr) {
|
||||||
if (content != null) {
|
if (content != null) {
|
||||||
Gdk.Pixbuf pb = content.scale_simple (alloc_width, alloc_height, Gdk.InterpType.BILINEAR);
|
Gdk.Pixbuf pb = content.scale_simple (alloc_width, alloc_height, Gdk.InterpType.BILINEAR);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user