[FFmpeg-cvslog] ffplay: hide cursor on no mouse movement

Marton Balint git at videolan.org
Sat Dec 29 04:40:35 CET 2012


ffmpeg | branch: master | Marton Balint <cus at passwd.hu> | Sat Dec  1 02:27:29 2012 +0100| [ef7f3b08703f334768f61c2c5817b6e42c05c08a] | committer: Marton Balint

ffplay: hide cursor on no mouse movement

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

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

 ffplay.c |   13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/ffplay.c b/ffplay.c
index 5f4f111..caba6d7 100644
--- a/ffplay.c
+++ b/ffplay.c
@@ -90,6 +90,8 @@ const int program_birth_year = 2003;
 /* TODO: We assume that a decoded and resampled frame fits into this buffer */
 #define SAMPLE_ARRAY_SIZE (8 * 65536)
 
+#define CURSOR_HIDE_DELAY 1000000
+
 static int64_t sws_flags = SWS_BICUBIC;
 
 typedef struct MyAVPacketList {
@@ -303,6 +305,8 @@ static const char *audio_codec_name;
 static const char *subtitle_codec_name;
 static const char *video_codec_name;
 static int rdftspeed = 20;
+static int64_t cursor_last_shown;
+static int cursor_hidden = 0;
 #if CONFIG_AVFILTER
 static char *vfilters = NULL;
 #endif
@@ -3038,6 +3042,11 @@ static void event_loop(VideoState *cur_stream)
                 break;
             }
         case SDL_MOUSEMOTION:
+            if (cursor_hidden) {
+                SDL_ShowCursor(1);
+                cursor_hidden = 0;
+            }
+            cursor_last_shown = av_gettime();
             if (event.type == SDL_MOUSEBUTTONDOWN) {
                 x = event.button.x;
             } else {
@@ -3084,6 +3093,10 @@ static void event_loop(VideoState *cur_stream)
             alloc_picture(event.user.data1);
             break;
         case FF_REFRESH_EVENT:
+            if (!cursor_hidden && av_gettime() - cursor_last_shown > CURSOR_HIDE_DELAY) {
+                SDL_ShowCursor(0);
+                cursor_hidden = 1;
+            }
             video_refresh(event.user.data1);
             cur_stream->refresh = 0;
             break;



More information about the ffmpeg-cvslog mailing list