From 860006e082545a766dde222d6c8cb2754ff987f1 Mon Sep 17 00:00:00 2001 From: Romain Vimont Date: Mon, 26 Mar 2018 14:45:52 +0200 Subject: [PATCH 1/2] Forward double-click events Double-clicks were not sent to the device anymore since the "double-click on black borders" feature. When a double click occurs inside the device screen, send the event to the device normally. Fixes . --- app/src/inputmanager.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/app/src/inputmanager.c b/app/src/inputmanager.c index 19830685..08b15a04 100644 --- a/app/src/inputmanager.c +++ b/app/src/inputmanager.c @@ -240,10 +240,11 @@ void input_manager_process_mouse_button(struct input_manager *input_manager, SDL_bool outside_device_screen = event->x < 0 || event->x >= input_manager->screen->frame_size.width || event->y < 0 || event->y >= input_manager->screen->frame_size.height; - if (outside_device_screen) { - screen_resize_to_fit(input_manager->screen); - } - return; + if (outside_device_screen) { + screen_resize_to_fit(input_manager->screen); + return; + } + // otherwise, send the click event to the device } }; struct control_event control_event; From 82efff34e8bcb9d5c4089dbee7f58af965a61778 Mon Sep 17 00:00:00 2001 From: Romain Vimont Date: Tue, 27 Mar 2018 11:01:40 +0200 Subject: [PATCH 2/2] Factorize texture creation SDL_CreateTexture() is called both during initialization and on frame size change. To avoid inconsistent changes to arguments value, factorize them to a single function create_texture(). --- app/src/screen.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/app/src/screen.c b/app/src/screen.c index 6587d659..5b4f0634 100644 --- a/app/src/screen.c +++ b/app/src/screen.c @@ -136,6 +136,11 @@ void screen_init(struct screen *screen) { *screen = (struct screen) SCREEN_INITIALIZER; } +static inline SDL_Texture *create_texture(SDL_Renderer *renderer, struct size frame_size) { + return SDL_CreateTexture(renderer, SDL_PIXELFORMAT_YV12, SDL_TEXTUREACCESS_STREAMING, + frame_size.width, frame_size.height); +} + SDL_bool screen_init_rendering(struct screen *screen, const char *device_name, struct size frame_size) { screen->frame_size = frame_size; @@ -174,8 +179,7 @@ SDL_bool screen_init_rendering(struct screen *screen, const char *device_name, s SDL_FreeSurface(icon); LOGI("Initial texture: %" PRIu16 "x%" PRIu16, frame_size.width, frame_size.height); - screen->texture = SDL_CreateTexture(screen->renderer, SDL_PIXELFORMAT_YV12, SDL_TEXTUREACCESS_STREAMING, - frame_size.width, frame_size.height); + screen->texture = create_texture(screen->renderer, frame_size); if (!screen->texture) { LOGC("Could not create texture: %s", SDL_GetError()); screen_destroy(screen); @@ -224,8 +228,7 @@ static SDL_bool prepare_for_frame(struct screen *screen, struct size new_frame_s LOGD("New texture: %" PRIu16 "x%" PRIu16, screen->frame_size.width, screen->frame_size.height); - screen->texture = SDL_CreateTexture(screen->renderer, SDL_PIXELFORMAT_YV12, SDL_TEXTUREACCESS_STREAMING, - new_frame_size.width, new_frame_size.height); + screen->texture = create_texture(screen->renderer, new_frame_size); if (!screen->texture) { LOGC("Could not create texture: %s", SDL_GetError()); return SDL_FALSE;