[FFmpeg-cvslog] ffplay: ignore keypress events before a window is created

Marton Balint git at videolan.org
Wed Jun 20 23:43:06 EEST 2018


ffmpeg | branch: master | Marton Balint <cus at passwd.hu> | Mon Jun 11 23:19:37 2018 +0200| [e8050aa79152899dbe50d4fb31e9303db8818cc2] | committer: Marton Balint

ffplay: ignore keypress events before a window is created

Current ffplay code assumes that the read thread is in its main loop before any
key events are captured, but apparently on IOS even keypresses without a window
are forwared.

Fixes ticket #7252.

Signed-off-by: Marton Balint <cus at passwd.hu>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=e8050aa79152899dbe50d4fb31e9303db8818cc2
---

 fftools/ffplay.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/fftools/ffplay.c b/fftools/ffplay.c
index 84ba6673dc..55cea32cae 100644
--- a/fftools/ffplay.c
+++ b/fftools/ffplay.c
@@ -3251,15 +3251,14 @@ static void event_loop(VideoState *cur_stream)
         refresh_loop_wait_event(cur_stream, &event);
         switch (event.type) {
         case SDL_KEYDOWN:
-            if (exit_on_keydown) {
+            if (exit_on_keydown || event.key.keysym.sym == SDLK_ESCAPE || event.key.keysym.sym == SDLK_q) {
                 do_exit(cur_stream);
                 break;
             }
+            // If we don't yet have a window, skip all key events, because read_thread might still be initializing...
+            if (!cur_stream->width)
+                continue;
             switch (event.key.keysym.sym) {
-            case SDLK_ESCAPE:
-            case SDLK_q:
-                do_exit(cur_stream);
-                break;
             case SDLK_f:
                 toggle_full_screen(cur_stream);
                 cur_stream->force_refresh = 1;



More information about the ffmpeg-cvslog mailing list