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

Vittorio Gambaletta (VittGam) ffmpeg-dev at vittgam.net
Sat Jan 16 22:25:28 CET 2016


Hi,

On 16/01/2016 21:25:00 CET, Marton Balint wrote:
> 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 don't know, I just looked at how the click counter is implemented in SDL2 and emulated that behaviour with SDL1. But it can be overkill, yes; in fact VLC does not seem to check this.

By the way, VLC doesn't even clear the status/timestamp when clicking another button, so maybe that is overkill too.

> 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.

Right, also I didn't think twice about the fact that cursor_last_shown is updated on motion too.

Thanks for the suggestions, I will send an updated patch soon.

Cheers,
Vittorio


More information about the ffmpeg-devel mailing list