MCPcopy Create free account
hub / github.com/KhronosGroup/Vulkan-Tools / handle_xcb_event

Method handle_xcb_event

cube/cube.cpp:3309–3349  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3307#if defined(VK_USE_PLATFORM_XCB_KHR)
3308
3309void Demo::handle_xcb_event(const xcb_generic_event_t *event) {
3310 uint8_t event_code = event->response_type & 0x7f;
3311 switch (event_code) {
3312 case XCB_EXPOSE:
3313 // TODO: Resize window
3314 break;
3315 case XCB_CLIENT_MESSAGE:
3316 if ((*(xcb_client_message_event_t *)event).data.data32[0] == (*atom_wm_delete_window).atom) {
3317 quit = true;
3318 }
3319 break;
3320 case XCB_KEY_RELEASE: {
3321 const xcb_key_release_event_t *key = (const xcb_key_release_event_t *)event;
3322
3323 switch (key->detail) {
3324 case 0x9: // Escape
3325 quit = true;
3326 break;
3327 case 0x71: // left arrow key
3328 spin_angle -= spin_increment;
3329 break;
3330 case 0x72: // right arrow key
3331 spin_angle += spin_increment;
3332 break;
3333 case 0x41: // space bar
3334 pause = !pause;
3335 break;
3336 }
3337 } break;
3338 case XCB_CONFIGURE_NOTIFY: {
3339 const xcb_configure_notify_event_t *cfg = (const xcb_configure_notify_event_t *)event;
3340 if ((width != cfg->width) || (height != cfg->height)) {
3341 width = cfg->width;
3342 height = cfg->height;
3343 resize();
3344 }
3345 } break;
3346 default:
3347 break;
3348 }
3349}
3350
3351template <>
3352void Demo::run<WsiPlatform::xcb>() {

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected