Work around a Wayland bug – wait for mouse up before creating a new window #470

This commit is contained in:
Lior Halphon 2022-07-31 13:30:21 +03:00
parent a005ebe417
commit ae1d3ddf6c
2 changed files with 22 additions and 0 deletions

View File

@ -274,6 +274,10 @@ endif
$(OBJ)/SDL/%.dep: SDL/%
-@$(MKDIR) -p $(dir $@)
$(CC) $(CFLAGS) $(SDL_CFLAGS) $(GL_CFLAGS) -MT $(OBJ)/$^.o -M $^ -c -o $@
$(OBJ)/OpenDialog/%.dep: OpenDialog/%
-@$(MKDIR) -p $(dir $@)
$(CC) $(CFLAGS) $(SDL_CFLAGS) $(GL_CFLAGS) -MT $(OBJ)/$^.o -M $^ -c -o $@
$(OBJ)/%.dep: %
-@$(MKDIR) -p $(dir $@)
@ -289,6 +293,11 @@ $(OBJ)/SDL/%.c.o: SDL/%.c
-@$(MKDIR) -p $(dir $@)
$(CC) $(CFLAGS) $(FAT_FLAGS) $(SDL_CFLAGS) $(GL_CFLAGS) -c $< -o $@
$(OBJ)/OpenDialog/%.c.o: OpenDialog/%.c
-@$(MKDIR) -p $(dir $@)
$(CC) $(CFLAGS) $(FAT_FLAGS) $(SDL_CFLAGS) $(GL_CFLAGS) -c $< -o $@
$(OBJ)/%.c.o: %.c
-@$(MKDIR) -p $(dir $@)
$(CC) $(CFLAGS) $(FAT_FLAGS) -c $< -o $@

View File

@ -1,4 +1,5 @@
#include "open_dialog.h"
#include <SDL.h>
#include <stdlib.h>
#include <stdio.h>
#include <dlfcn.h>
@ -51,8 +52,18 @@ if (symbol == NULL) goto lazy_error
void nop(){}
static void wait_mouse_up(void)
{
while (true) {
if (!(SDL_GetMouseState(NULL, NULL) & SDL_BUTTON(SDL_BUTTON_LEFT))) break;
SDL_Event event;
SDL_PollEvent(&event);
}
}
char *do_open_rom_dialog(void)
{
wait_mouse_up();
static void *handle = NULL;
TRY_DLOPEN("libgtk-3.so");
@ -129,6 +140,7 @@ lazy_error:
char *do_open_folder_dialog(void)
{
wait_mouse_up();
static void *handle = NULL;
TRY_DLOPEN("libgtk-3.so");
@ -261,6 +273,7 @@ lazy_error:
char *do_save_recording_dialog(unsigned frequency)
{
wait_mouse_up();
static void *handle = NULL;
TRY_DLOPEN("libgtk-3.so");