[FFmpeg-devel] [PATCH 2/2] ffplay: Toggle full screen when double-clicking the video window with the left mouse button.

Marton Balint cus at passwd.hu
Sat Jan 16 21:25:00 CET 2016


On Fri, 15 Jan 2016, Vittorio Gambaletta (VittGam) wrote:
> Now that the seek only happens with the right mouse button, it makes
> sense to toggle full screen when double-clicking with the left mouse
> button, like other video players do.
>

I am not against this.

> Signed-off-by: Vittorio Gambaletta <ffmpeg-dev at vittgam.net>
>
> ---
>  ffplay.c |   18 ++++++++++++++++++
>  1 file changed, 18 insertions(+)
>
> diff --git a/ffplay.c b/ffplay.c
> index 2fa7165..582ca39 100644
> --- a/ffplay.c
> +++ b/ffplay.c
> @@ -3473,6 +3473,24 @@ static void event_loop(VideoState *cur_stream)
>                  do_exit(cur_stream);
>                  break;
>              }
> +            {

Whitespace and indentation seems messed up in this patch as well.

> +                static int mouse_left_click_status = 0;
> +                static double mouse_left_click_last_x, mouse_left_click_last_y;
> +                if (event.button.button == SDL_BUTTON_LEFT) {
> +                    if (mouse_left_click_status == 1 && av_gettime_relative() - cursor_last_shown <= 500000
> +                        && fabs(event.button.x - mouse_left_click_last_x) <= 1 && fabs(event.button.y - mouse_left_click_last_y) <= 1) {
> +                        toggle_full_screen(cur_stream);
> +                        cur_stream->force_refresh = 1;
> +                        mouse_left_click_status = 0;
> +                    } else {
> +                        mouse_left_click_status = 1;
> +                        mouse_left_click_last_x = event.button.x;
> +                        mouse_left_click_last_y = event.button.y;
> +                    }
> +                } else {
> +                    mouse_left_click_status = 0;
> +                }
> +            }

I don't think we need the complex stuff about not clicking too far out of 
the first click, what are the chances of a fast moving mouse with double 
clicking? Slim to none I guess. Are you aware of a case when this matters?

I think it is enough if you just store the timestamp of the last left 
click in an int64_t and check the time difference next time the user do a 
left click, this way you can detect double clicking with a single variable 
and you don't have to use cursor_last_shown which is updated on every 
motion as well.

Regards,
Marton


More information about the ffmpeg-devel mailing list