package testclient import "core:fmt" import "core:log" import wl "../mockgen" wl_display_error_handler :: proc(e: wl.Display_Error, userdata: rawptr) { log.error(e) } wl_display_delete_id_handler :: proc(e: wl.Display_Delete_ID, userdata: rawptr) {} wl_registry_global_handler :: proc(e: wl.Registry_Global, global_counter: ^u32) { log.info(global_counter^, "globals!") global_counter^ += 1 switch e.interface { case wl.COMPOSITOR_INTERFACE_NAME: compositor: wl.Compositor_ID wl.registry_bind(e.session, e.registry, e.name, e.interface, e.version, &compositor) } } wl_registry_global_remove_handler :: proc(e: wl.Registry_Global_Remove, userdata: rawptr) {} main :: proc() { context.logger = log.create_console_logger(allocator=context.allocator) defer log.destroy_console_logger(context.logger, context.allocator) session := new(wl.Session) defer free(session) if !wl.init(session, context.allocator) { panic("Failed to connect to Wayland.") } defer wl.fini(session) log.info("Successfully connected to Wayland.") wl.on_display_error(session, wl_display_error_handler, nil) wl.on_display_delete_id(session, wl_display_delete_id_handler, nil) global_counter: u32 registry, _ := wl.display_get_registry(session) wl.on_event(session, registry, wl_registry_global_handler, &global_counter) wl.on_event(session, registry, wl_registry_global_remove_handler, nil) synced: bool sync_cb, _ := wl.display_sync(session) wl.on_event(session, sync_cb, proc(e: wl.Callback_Done, synced: ^bool) { synced^ = true }, &synced) for !synced do wl.pump_events(session) log.info("Synced successfully, shutting down...") }