On Mon, 11 Jun 2018, Carl Eugen Hoyos wrote:
Hi!
Attached patch fixes a crash if SDL sends a keydown event before
stream and window initialization is finished, ticket #7252.
Wow, current ffplay code assumes that no keypress or mouse events will
come before the window is shown. Strange thing that SDL2 on IOS
is forwarding input events even without a window...
So in order to fix this more thoroughly, I suggest the attached patch
instead. Supporting keypresses without a window (e.g. -nodisp mode) might
be possible, but that requires bigger changes...
Regards,
Marton
From 23ec72e867f3f25f422d6c1c7298cfcf79b4f113 Mon Sep 17 00:00:00 2001
From: Marton Balint <c...@passwd.hu>
Date: Mon, 11 Jun 2018 23:19:37 +0200
Subject: [PATCH] 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 <c...@passwd.hu>
---
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;
--
2.16.4
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel