Mesa (master): st/eglwayland: Add support for EGL_DEFAULT_DISPLAY

Kristian Høgsberg krh at kemper.freedesktop.org
Sun Jun 12 12:58:49 UTC 2011


Module: Mesa
Branch: master
Commit: a23bf646bdeb72381e7f2bc784d47748cdd7d1ce
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a23bf646bdeb72381e7f2bc784d47748cdd7d1ce

Author: Benjamin Franzke <benjaminfranzke at googlemail.com>
Date:   Sat Jun 11 22:24:14 2011 +0200

st/eglwayland: Add support for EGL_DEFAULT_DISPLAY

---

 .../state_trackers/egl/wayland/native_drm.c        |    2 ++
 .../state_trackers/egl/wayland/native_shm.c        |    2 ++
 .../state_trackers/egl/wayland/native_wayland.c    |   10 ++++++++++
 .../state_trackers/egl/wayland/native_wayland.h    |    1 +
 4 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/src/gallium/state_trackers/egl/wayland/native_drm.c b/src/gallium/state_trackers/egl/wayland/native_drm.c
index 15383e8..a9fd303 100644
--- a/src/gallium/state_trackers/egl/wayland/native_drm.c
+++ b/src/gallium/state_trackers/egl/wayland/native_drm.c
@@ -98,6 +98,8 @@ wayland_drm_display_destroy(struct native_display *ndpy)
       FREE(drmdpy->device_name);
    if (drmdpy->base.config)
       FREE(drmdpy->base.config);
+   if (drmdpy->base.own_dpy)
+      wl_display_destroy(drmdpy->base.dpy);
 
    ndpy_uninit(ndpy);
 
diff --git a/src/gallium/state_trackers/egl/wayland/native_shm.c b/src/gallium/state_trackers/egl/wayland/native_shm.c
index 609fc0c..8614a76 100644
--- a/src/gallium/state_trackers/egl/wayland/native_shm.c
+++ b/src/gallium/state_trackers/egl/wayland/native_shm.c
@@ -65,6 +65,8 @@ wayland_shm_display_destroy(struct native_display *ndpy)
 
    if (shmdpy->base.config)
       FREE(shmdpy->base.config);
+   if (shmdpy->base.own_dpy)
+      wl_display_destroy(shmdpy->base.dpy);
 
    ndpy_uninit(ndpy);
 
diff --git a/src/gallium/state_trackers/egl/wayland/native_wayland.c b/src/gallium/state_trackers/egl/wayland/native_wayland.c
index 0292d56..3d1bb6f 100644
--- a/src/gallium/state_trackers/egl/wayland/native_wayland.c
+++ b/src/gallium/state_trackers/egl/wayland/native_wayland.c
@@ -459,9 +459,17 @@ static struct native_display *
 native_create_display(void *dpy, boolean use_sw, void *user_data)
 {
    struct wayland_display *display = NULL;
+   boolean own_dpy = FALSE;
 
    use_sw = use_sw || debug_get_bool_option("EGL_SOFTWARE", FALSE);
 
+   if (dpy == NULL) {
+      dpy = wl_display_connect(NULL);
+      if (dpy == NULL)
+         return NULL;
+      own_dpy = TRUE;
+   }
+
    if (use_sw) {
       _eglLog(_EGL_INFO, "use software fallback");
       display = wayland_create_shm_display((struct wl_display *) dpy,
@@ -482,6 +490,8 @@ native_create_display(void *dpy, boolean use_sw, void *user_data)
    display->base.create_window_surface = wayland_create_window_surface;
    display->base.create_pixmap_surface = wayland_create_pixmap_surface;
 
+   display->own_dpy = own_dpy;
+
    return &display->base;
 }
 
diff --git a/src/gallium/state_trackers/egl/wayland/native_wayland.h b/src/gallium/state_trackers/egl/wayland/native_wayland.h
index e69a8f0..81c7a8b 100644
--- a/src/gallium/state_trackers/egl/wayland/native_wayland.h
+++ b/src/gallium/state_trackers/egl/wayland/native_wayland.h
@@ -41,6 +41,7 @@ struct wayland_display {
 
    struct wayland_config *config;
    struct wl_display *dpy;
+   boolean own_dpy;
 
    struct wl_buffer *(*create_buffer)(struct wayland_display *display,
                                       struct wayland_surface *surface,




More information about the mesa-commit mailing list