static void gfx_ctx_drm_check_window(void *data, bool *quit, bool *resize, unsigned *width, unsigned *height, unsigned frame_count) { (void)data; (void)frame_count; (void)width; (void)height; *resize = false; *quit = (bool)frontend_driver_get_signal_handler_state(); }
static void gfx_ctx_vc_check_window(void *data, bool *quit, bool *resize, unsigned *width, unsigned *height, bool is_shutdown) { (void)data; (void)width; (void)height; *resize = false; *quit = (bool)frontend_driver_get_signal_handler_state(); }
static void gfx_ctx_mali_fbdev_check_window(void *data, bool *quit, bool *resize, unsigned *width, unsigned *height, bool is_shutdown) { unsigned new_width, new_height; gfx_ctx_mali_fbdev_get_video_size(data, &new_width, &new_height); if (new_width != *width || new_height != *height) { *width = new_width; *height = new_height; *resize = true; } *quit = (bool)frontend_driver_get_signal_handler_state(); }
static void gfx_ctx_khr_display_check_window(void *data, bool *quit, bool *resize, unsigned *width, unsigned *height, unsigned frame_count) { khr_display_ctx_data_t *khr = (khr_display_ctx_data_t*)data; (void)frame_count; *resize = khr->vk.need_new_swapchain; if (khr->width != *width || khr->height != *height) { *width = khr->width; *height = khr->height; *resize = true; } if (runloop_ctl(RUNLOOP_CTL_IS_SHUTDOWN, NULL) || (bool)frontend_driver_get_signal_handler_state()) *quit = true; }
static void gfx_ctx_opendingux_check_window(void *data, bool *quit, bool *resize, unsigned *width, unsigned *height, bool is_shutdown) { unsigned new_width, new_height; opendingux_ctx_data_t *viv = (opendingux_ctx_data_t*)data; #ifdef HAVE_EGL egl_get_video_size(&viv->egl, &new_width, &new_height); #endif if (new_width != *width || new_height != *height) { *width = new_width; *height = new_height; *resize = true; } *quit = (bool)frontend_driver_get_signal_handler_state(); }
void x11_check_window(void *data, bool *quit, bool *resize, unsigned *width, unsigned *height, bool is_shutdown) { unsigned new_width = *width; unsigned new_height = *height; x11_get_video_size(data, &new_width, &new_height); if (new_width != *width || new_height != *height) { *resize = true; *width = new_width; *height = new_height; } x11_alive(data); *quit = (bool)frontend_driver_get_signal_handler_state(); }
static void gfx_ctx_wl_check_window(void *data, bool *quit, bool *resize, unsigned *width, unsigned *height, unsigned frame_count) { gfx_ctx_wayland_data_t *wl = (gfx_ctx_wayland_data_t*)data; unsigned new_width, new_height; (void)frame_count; flush_wayland_fd(wl); new_width = *width; new_height = *height; gfx_ctx_wl_get_video_size(data, &new_width, &new_height); switch (wl_api) { case GFX_CTX_VULKAN_API: #ifdef HAVE_VULKAN /* Swapchains are recreated in set_resize as a * central place, so use that to trigger swapchain reinit. */ *resize = wl->vk.need_new_swapchain; #endif break; case GFX_CTX_NONE: default: break; } if (new_width != *width || new_height != *height) { *resize = true; *width = new_width; *height = new_height; } *quit = (bool)frontend_driver_get_signal_handler_state(); }
bool x11_alive(void *data) { while (XPending(g_x11_dpy)) { XEvent event; bool filter = false; /* Can get events from older windows. Check this. */ XNextEvent(g_x11_dpy, &event); filter = XFilterEvent(&event, g_x11_win); switch (event.type) { case ClientMessage: if (event.xclient.window == g_x11_win && (Atom)event.xclient.data.l[0] == g_x11_quit_atom) frontend_driver_set_signal_handler_state(1); break; case DestroyNotify: if (event.xdestroywindow.window == g_x11_win) frontend_driver_set_signal_handler_state(1); break; case MapNotify: if (event.xmap.window == g_x11_win) g_x11_has_focus = true; break; case UnmapNotify: if (event.xunmap.window == g_x11_win) g_x11_has_focus = false; break; case ButtonPress: switch (event.xbutton.button) { case 1: /* Left click */ #if 0 RARCH_LOG("Click occurred : [%d, %d]\n", event.xbutton.x_root, event.xbutton.y_root); #endif break; case 2: /* Grabbed */ /* Middle click */ break; case 3: /* Right click */ break; case 4: /* Grabbed */ /* Scroll up */ case 5: /* Scroll down */ x_input_poll_wheel(&event.xbutton, true); break; } break; case EnterNotify: g_x11_entered = true; break; case LeaveNotify: g_x11_entered = false; break; case ButtonRelease: break; case KeyPress: case KeyRelease: if (event.xkey.window == g_x11_win) x11_handle_key_event(&event, g_x11_xic, filter); break; } } return !((bool)frontend_driver_get_signal_handler_state()); }