]> git.sesse.net Git - vlc/blobdiff - src/video_output/display.c
Fixed a compilation warning.
[vlc] / src / video_output / display.c
index bbc6010afc650fec1d2d746f99c3163d19e09f26..4749eb2889c737a80dbeb900ddf843ae23ded864 100644 (file)
@@ -255,7 +255,7 @@ void vout_display_PlacePicture(vout_display_place_t *place,
         place->x = cfg->display.width - place->width;
         break;
     default:
-        place->x = (cfg->display.width - place->width) / 2;
+        place->x = ((int)cfg->display.width - (int)place->width) / 2;
         break;
     }
 
@@ -267,7 +267,7 @@ void vout_display_PlacePicture(vout_display_place_t *place,
         place->y = cfg->display.height - place->height;
         break;
     default:
-        place->y = (cfg->display.height - place->height) / 2;
+        place->y = ((int)cfg->display.height - (int)place->height) / 2;
         break;
     }
 }
@@ -286,8 +286,8 @@ struct vout_display_owner_sys_t {
     } sar_initial;
 
     /* */
-    int  width_saved;
-    int  height_saved;
+    unsigned width_saved;
+    unsigned height_saved;
 
     struct {
         unsigned num;
@@ -546,18 +546,19 @@ static void VoutDisplayEventMouse(vout_display_t *vd, int event, va_list args)
 
 static void *VoutDisplayEventKeyDispatch(void *data)
 {
-    vout_display_t *vd = data;
-    vout_display_owner_sys_t *osys = vd->owner.sys;
+    vout_display_owner_sys_t *osys = data;
 
     for (;;) {
         block_t *event = block_FifoGet(osys->event.fifo);
-        if (!event)
-            return NULL;
+
+        int cancel = vlc_savecancel();
 
         int key;
         memcpy(&key, event->p_buffer, sizeof(key));
         vout_SendEventKey(osys->vout, key);
         block_Release(event);
+
+        vlc_restorecancel(cancel);
     }
 }
 
@@ -570,7 +571,7 @@ static void VoutDisplayEventKey(vout_display_t *vd, int key)
         if (!osys->event.fifo)
             return;
         if (vlc_clone(&osys->event.thread, VoutDisplayEventKeyDispatch,
-                      vd, VLC_THREAD_PRIORITY_LOW)) {
+                      osys, VLC_THREAD_PRIORITY_LOW)) {
             block_FifoRelease(osys->event.fifo);
             osys->event.fifo = NULL;
             return;
@@ -680,12 +681,29 @@ static vout_window_t *VoutDisplayNewWindow(vout_display_t *vd, const vout_window
 {
     vout_display_owner_sys_t *osys = vd->owner.sys;
 
+#ifdef ALLOW_DUMMY_VOUT
+    if (!osys->vout->p) {
+        vout_window_cfg_t cfg_override = *cfg;
+
+        if (!var_InheritBool(osys->vout, "embedded-video"))
+            cfg_override.is_standalone = true;
+
+        return vout_window_New(VLC_OBJECT(osys->vout), NULL, &cfg_override);
+    }
+#endif
     return vout_NewDisplayWindow(osys->vout, vd, cfg);
 }
 static void VoutDisplayDelWindow(vout_display_t *vd, vout_window_t *window)
 {
     vout_display_owner_sys_t *osys = vd->owner.sys;
 
+#ifdef ALLOW_DUMMY_VOUT
+    if (!osys->vout->p) {
+        if( window)
+            vout_window_Delete(window);
+        return;
+    }
+#endif
     vout_DeleteDisplayWindow(osys->vout, vd, window);
 }
 
@@ -1278,7 +1296,7 @@ void vout_DeleteDisplay(vout_display_t *vd, vout_display_state_t *state)
         SplitterClose(vd);
     vout_display_Delete(vd);
     if (osys->event.fifo) {
-        block_FifoWake(osys->event.fifo);
+        vlc_cancel(osys->event.thread);
         vlc_join(osys->event.thread, NULL);
         block_FifoRelease(osys->event.fifo);
     }