mirror of
https://repo.dec05eba.com/gpu-screen-recorder-ui
synced 2026-05-07 15:19:56 +09:00
Fix controller double click not working sometimes
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
#include "GlobalHotkeys.hpp"
|
||||
#include "Hotplug.hpp"
|
||||
#include <unordered_map>
|
||||
#include <optional>
|
||||
#include <thread>
|
||||
#include <poll.h>
|
||||
#include <mglpp/system/Clock.hpp>
|
||||
@@ -45,7 +46,7 @@ namespace gsr {
|
||||
int event_index = -1;
|
||||
|
||||
mgl::Clock double_click_clock;
|
||||
int num_times_clicked = 0;
|
||||
std::optional<double> prev_time_clicked;
|
||||
bool save_replay = false;
|
||||
int hotplug_poll_index = -1;
|
||||
Hotplug hotplug;
|
||||
|
||||
@@ -52,7 +52,7 @@ datadir = get_option('datadir')
|
||||
gsr_ui_resources_path = join_paths(prefix, datadir, 'gsr-ui')
|
||||
|
||||
add_project_arguments('-DGSR_UI_VERSION="' + meson.project_version() + '"', language: ['c', 'cpp'])
|
||||
add_project_arguments('-DGSR_FLATPAK_VERSION="5.0.10"', language: ['c', 'cpp'])
|
||||
add_project_arguments('-DGSR_FLATPAK_VERSION="5.1.0"', language: ['c', 'cpp'])
|
||||
|
||||
executable(
|
||||
meson.project_name(),
|
||||
|
||||
@@ -155,15 +155,20 @@ namespace gsr {
|
||||
return;
|
||||
|
||||
if(event.number == 8 && event.value == 1) {
|
||||
++num_times_clicked;
|
||||
if(num_times_clicked == 1)
|
||||
double_click_clock.restart();
|
||||
else if(num_times_clicked == 2 && double_click_clock.restart() >= double_click_timeout_seconds)
|
||||
num_times_clicked = 0;
|
||||
const double now = double_click_clock.get_elapsed_time_seconds();
|
||||
if(!prev_time_clicked.has_value()) {
|
||||
prev_time_clicked = now;
|
||||
return;
|
||||
}
|
||||
|
||||
if(num_times_clicked == 2) {
|
||||
save_replay = true;
|
||||
num_times_clicked = 0;
|
||||
if(prev_time_clicked.has_value()) {
|
||||
const bool double_clicked = (now - prev_time_clicked.value()) < double_click_timeout_seconds;
|
||||
if(double_clicked) {
|
||||
save_replay = true;
|
||||
prev_time_clicked.reset();
|
||||
} else {
|
||||
prev_time_clicked = now;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user