]> git.sesse.net Git - vlc/commitdiff
SDL: use key thread (partially fix #3661)
authorRémi Denis-Courmont <remi@remlab.net>
Sun, 30 May 2010 11:41:04 +0000 (14:41 +0300)
committerRémi Denis-Courmont <remi@remlab.net>
Sun, 30 May 2010 11:41:04 +0000 (14:41 +0300)
modules/video_output/Modules.am
modules/video_output/sdl.c

index b0a5b4b5216496a6a7130fd5230874e958ab7c2b..92f28feefaf493a01de0c87cb0175e7dabee4632 100644 (file)
@@ -7,7 +7,7 @@ LIBTOOL=@LIBTOOL@ --tag=CC
 SOURCES_aa = aa.c
 SOURCES_caca = caca.c
 SOURCES_fb = fb.c
-SOURCES_vout_sdl = sdl.c
+SOURCES_vout_sdl = sdl.c keythread.h keythread.c
 SOURCES_snapshot = snapshot.c
 SOURCES_directfb = directfb.c
 SOURCES_vmem = vmem.c
index 17448a0e7634a2ae21c93718916ccff4d4a94f55..84af7d55df4e3731c464fcaca6c38ab00aba7e10 100644 (file)
@@ -35,6 +35,7 @@
 #include <vlc_plugin.h>
 #include <vlc_vout_display.h>
 #include <vlc_picture_pool.h>
+#include "keythread.h"
 
 #include <assert.h>
 
@@ -99,6 +100,7 @@ struct vout_display_sys_t {
 
     /* */
     picture_pool_t       *pool;
+    key_thread_t         *keys;
 };
 
 /**
@@ -332,6 +334,8 @@ static int Open(vlc_object_t *object)
 
     /* */
     vout_display_SendEventDisplaySize(vd, display_width, display_height, vd->cfg->is_fullscreen);
+
+    sys->keys = vlc_CreateKeyThread (vd);
     return VLC_SUCCESS;
 
 error:
@@ -358,6 +362,8 @@ static void Close(vlc_object_t *object)
     vout_display_t *vd = (vout_display_t *)object;
     vout_display_sys_t *sys = vd->sys;
 
+    vlc_DestroyKeyThread(sys->keys);
+
     if (sys->pool)
         picture_pool_Delete(sys->pool);
 
@@ -596,7 +602,7 @@ static void Manage(vout_display_t *vd)
                 key |= KEY_MODIFIER_CTRL;
             if (event.key.keysym.mod & KMOD_ALT)
                 key |= KEY_MODIFIER_ALT;
-            vout_display_SendEventKey(vd, key);
+            vlc_EmitKey(sys->keys, key);
             break;
         }
 
@@ -702,4 +708,3 @@ static int ConvertKey(SDLKey sdl_key)
     }
     return 0;
 }
-