static void gdk_mir_event_source_queue_event (GdkDisplay *display, GdkWindow *window, const MirEvent *event) { const MirInputEvent *input_event; // FIXME: Only generate events if the window wanted them? switch (mir_event_get_type (event)) { case mir_event_type_input: input_event = mir_event_get_input_event (event); switch (mir_input_event_get_type (input_event)) { case mir_input_event_type_key: handle_key_event (window, input_event); break; case mir_input_event_type_touch: handle_motion_event (window, input_event); break; case mir_input_event_type_pointer: handle_motion_event (window, input_event); break; } break; case mir_event_type_key: handle_key_event (window, mir_event_get_input_event (event)); break; case mir_event_type_motion: handle_motion_event (window, mir_event_get_input_event (event)); break; case mir_event_type_surface: handle_surface_event (window, mir_event_get_surface_event (event)); break; case mir_event_type_resize: handle_resize_event (window, mir_event_get_resize_event (event)); break; case mir_event_type_prompt_session_state_change: // FIXME? break; case mir_event_type_orientation: // FIXME? break; case mir_event_type_close_surface: handle_close_event (window, mir_event_get_close_surface_event (event)); break; default: g_warning ("Ignoring unknown Mir event %d", mir_event_get_type (event)); // FIXME? break; } }
void BC_DialogThread::run() { gui = new_gui(); startup_lock->unlock(); int result = gui->run_window(); handle_done_event(result); window_lock->lock("BC_DialogThread::run"); delete gui; gui = 0; window_lock->unlock(); handle_close_event(result); }