int _glfwPlatformInit(void) { int error; _glfw.mir.connection = mir_connect_sync(NULL, __PRETTY_FUNCTION__); if (!mir_connection_is_valid(_glfw.mir.connection)) { _glfwInputError(GLFW_PLATFORM_ERROR, "Mir: Unable to connect to Server"); return GL_FALSE; } _glfw.mir.display = mir_connection_get_egl_native_display(_glfw.mir.connection); if (!_glfwInitContextAPI()) return GL_FALSE; _glfwInitTimer(); _glfwInitJoysticks(); _glfw.mir.event_queue = calloc(1, sizeof(EventQueue)); _glfwInitEventQueue(_glfw.mir.event_queue); error = pthread_mutex_init(&_glfw.mir.event_mutex, NULL); if (error) { _glfwInputError(GLFW_PLATFORM_ERROR, "Mir: Failed to create Event Mutex Error: %i\n", error); return GL_FALSE; } return GL_TRUE; }
void* NativeStateMir::display() { if (mir_connection_is_valid(mir_connection_)) return static_cast<void*>(mir_connection_get_egl_native_display(mir_connection_)); return 0; }
gboolean _gdk_mir_display_init_egl_display (GdkDisplay *display) { GdkMirDisplay *mir_dpy = GDK_MIR_DISPLAY (display); EGLint major_version, minor_version; EGLDisplay *dpy; if (mir_dpy->egl_display) return TRUE; dpy = eglGetDisplay (mir_connection_get_egl_native_display (mir_dpy->connection)); if (dpy == NULL) return FALSE; if (!eglInitialize (dpy, &major_version, &minor_version)) return FALSE; if (!eglBindAPI (EGL_OPENGL_API)) return FALSE; mir_dpy->egl_display = dpy; mir_dpy->have_egl_khr_create_context = epoxy_has_egl_extension (dpy, "EGL_KHR_create_context"); mir_dpy->have_egl_buffer_age = epoxy_has_egl_extension (dpy, "EGL_EXT_buffer_age"); mir_dpy->have_egl_swap_buffers_with_damage = epoxy_has_egl_extension (dpy, "EGL_EXT_swap_buffers_with_damage"); mir_dpy->have_egl_surfaceless_context = epoxy_has_egl_extension (dpy, "EGL_KHR_surfaceless_context"); GDK_NOTE (OPENGL, g_print ("EGL API version %d.%d found\n" " - Vendor: %s\n" " - Version: %s\n" " - Client APIs: %s\n" " - Extensions:\n" "\t%s\n", major_version, minor_version, eglQueryString (dpy, EGL_VENDOR), eglQueryString (dpy, EGL_VERSION), eglQueryString (dpy, EGL_CLIENT_APIS), eglQueryString (dpy, EGL_EXTENSIONS))); return TRUE; }
int _glfwPlatformInit(void) { int error; _glfw.mir.connection = mir_connect_sync(NULL, __PRETTY_FUNCTION__); if (!mir_connection_is_valid(_glfw.mir.connection)) { _glfwInputError(GLFW_PLATFORM_ERROR, "Mir: Unable to connect to server: %s", mir_connection_get_error_message(_glfw.mir.connection)); return GLFW_FALSE; } _glfw.mir.display = mir_connection_get_egl_native_display(_glfw.mir.connection); createKeyTables(); if (!_glfwInitThreadLocalStoragePOSIX()) return GLFW_FALSE; if (!_glfwInitJoysticksLinux()) return GLFW_FALSE; _glfwInitTimerPOSIX(); // Need the default conf for when we set a NULL cursor _glfw.mir.defaultConf = mir_cursor_configuration_from_name(mir_default_cursor_name); _glfw.mir.disabledConf = mir_cursor_configuration_from_name(mir_disabled_cursor_name); _glfw.mir.eventQueue = calloc(1, sizeof(EventQueue)); _glfwInitEventQueueMir(_glfw.mir.eventQueue); error = pthread_mutex_init(&_glfw.mir.eventMutex, NULL); if (error) { _glfwInputError(GLFW_PLATFORM_ERROR, "Mir: Failed to create event mutex: %s", strerror(error)); return GLFW_FALSE; } _glfwPollMonitorsMir(); return GLFW_TRUE; }
int _glfwPlatformInit(void) { _glfw.mir.connection = mir_connect_sync(NULL, __PRETTY_FUNCTION__); if (!mir_connection_is_valid(_glfw.mir.connection)) { _glfwInputError(GLFW_PLATFORM_ERROR, "Mir: Unable to connect to Server"); return GL_FALSE; } _glfw.mir.display = mir_connection_get_egl_native_display(_glfw.mir.connection); if (!_glfwInitContextAPI()) return GL_FALSE; _glfwInitTimer(); _glfwInitJoysticks(); return GL_TRUE; }
EGLNativeDisplayType MirDisplayConnection::native_display() const { return mir_connection_get_egl_native_display(connection_); }