| 306 | ////////////////////////////////////////////////////////////////////////// |
| 307 | |
| 308 | int _glfwPlatformInit(void) |
| 309 | { |
| 310 | const char* cursorTheme; |
| 311 | const char* cursorSizeStr; |
| 312 | char* cursorSizeEnd; |
| 313 | long cursorSizeLong; |
| 314 | int cursorSize; |
| 315 | |
| 316 | // These must be set before any failure checks |
| 317 | _glfw.wl.timerfd = -1; |
| 318 | _glfw.wl.cursorTimerfd = -1; |
| 319 | |
| 320 | _glfw.wl.cursor.handle = _glfw_dlopen("libwayland-cursor.so.0"); |
| 321 | if (!_glfw.wl.cursor.handle) |
| 322 | { |
| 323 | _glfwInputError(GLFW_PLATFORM_ERROR, |
| 324 | "Wayland: Failed to load libwayland-cursor"); |
| 325 | return GLFW_FALSE; |
| 326 | } |
| 327 | |
| 328 | _glfw.wl.cursor.theme_load = (PFN_wl_cursor_theme_load) |
| 329 | _glfw_dlsym(_glfw.wl.cursor.handle, "wl_cursor_theme_load"); |
| 330 | _glfw.wl.cursor.theme_destroy = (PFN_wl_cursor_theme_destroy) |
| 331 | _glfw_dlsym(_glfw.wl.cursor.handle, "wl_cursor_theme_destroy"); |
| 332 | _glfw.wl.cursor.theme_get_cursor = (PFN_wl_cursor_theme_get_cursor) |
| 333 | _glfw_dlsym(_glfw.wl.cursor.handle, "wl_cursor_theme_get_cursor"); |
| 334 | _glfw.wl.cursor.image_get_buffer = (PFN_wl_cursor_image_get_buffer) |
| 335 | _glfw_dlsym(_glfw.wl.cursor.handle, "wl_cursor_image_get_buffer"); |
| 336 | |
| 337 | _glfw.wl.egl.handle = _glfw_dlopen("libwayland-egl.so.1"); |
| 338 | if (!_glfw.wl.egl.handle) |
| 339 | { |
| 340 | _glfwInputError(GLFW_PLATFORM_ERROR, |
| 341 | "Wayland: Failed to load libwayland-egl"); |
| 342 | return GLFW_FALSE; |
| 343 | } |
| 344 | |
| 345 | _glfw.wl.egl.window_create = (PFN_wl_egl_window_create) |
| 346 | _glfw_dlsym(_glfw.wl.egl.handle, "wl_egl_window_create"); |
| 347 | _glfw.wl.egl.window_destroy = (PFN_wl_egl_window_destroy) |
| 348 | _glfw_dlsym(_glfw.wl.egl.handle, "wl_egl_window_destroy"); |
| 349 | _glfw.wl.egl.window_resize = (PFN_wl_egl_window_resize) |
| 350 | _glfw_dlsym(_glfw.wl.egl.handle, "wl_egl_window_resize"); |
| 351 | |
| 352 | _glfw.wl.xkb.handle = _glfw_dlopen("libxkbcommon.so.0"); |
| 353 | if (!_glfw.wl.xkb.handle) |
| 354 | { |
| 355 | _glfwInputError(GLFW_PLATFORM_ERROR, |
| 356 | "Wayland: Failed to load libxkbcommon"); |
| 357 | return GLFW_FALSE; |
| 358 | } |
| 359 | |
| 360 | _glfw.wl.xkb.context_new = (PFN_xkb_context_new) |
| 361 | _glfw_dlsym(_glfw.wl.xkb.handle, "xkb_context_new"); |
| 362 | _glfw.wl.xkb.context_unref = (PFN_xkb_context_unref) |
| 363 | _glfw_dlsym(_glfw.wl.xkb.handle, "xkb_context_unref"); |
| 364 | _glfw.wl.xkb.keymap_new_from_string = (PFN_xkb_keymap_new_from_string) |
| 365 | _glfw_dlsym(_glfw.wl.xkb.handle, "xkb_keymap_new_from_string"); |
no test coverage detected