[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

xorg-server: Changes to 'ubuntu'



 debian/changelog                                 |    9 +
 debian/patches/series                            |    1 
 debian/patches/xmir-desktop-file-hint-flag.patch |   15 +-
 debian/patches/xmir-fixes.diff                   |  149 -----------------------
 debian/patches/xmir.patch                        |  111 +++++++++--------
 5 files changed, 82 insertions(+), 203 deletions(-)

New commits:
commit 49995bc9b0af37782d06b55731eab54621008b97
Author: Robert Ancell <robert.ancell@canonical.com>
Date:   Fri Apr 29 15:03:30 2016 +0200

    Update xmir.patch

diff --git a/debian/changelog b/debian/changelog
index dc35c4f..a6337c6 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,12 @@
+xorg-server (2:1.18.3-1ubuntu3) yakkety; urgency=medium
+
+  * debian/patches/xmir.patch:
+    - Pass keymap from Mir to Xkb (LP: #1566487)
+  * debian/patches/xmir-fixes.diff:
+    - Merged into xmir.patch
+
+ -- Robert Ancell <robert.ancell@canonical.com>  Fri, 29 Apr 2016 14:36:49 +0200
+
 xorg-server (2:1.18.3-1ubuntu2) xenial; urgency=medium
 
   * Disable 190_cache-xkbcomp_output_for_fast_start_up.patch for now,
diff --git a/debian/patches/series b/debian/patches/series
index 80c0c56..891be0f 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -50,4 +50,3 @@ xmir.patch
 xmir-desktop-file-hint-flag.patch
 drm_device_keep_trying.patch
 xi2-resize-touch.patch
-xmir-fixes.diff
diff --git a/debian/patches/xmir-desktop-file-hint-flag.patch b/debian/patches/xmir-desktop-file-hint-flag.patch
index 16e3152..f015ca3 100644
--- a/debian/patches/xmir-desktop-file-hint-flag.patch
+++ b/debian/patches/xmir-desktop-file-hint-flag.patch
@@ -1,16 +1,18 @@
-From 938313b76b0e3279a94af931cbe5fd34b8cb580c Mon Sep 17 00:00:00 2001
+From de9e6e1d66680e717471df2c4032e590fd1b9ae0 Mon Sep 17 00:00:00 2001
 From: Robert Ancell <robert.ancell@canonical.com>
-Date: Mon, 13 Jul 2015 15:54:32 +1200
-Subject: [PATCH 3/4] xmir: Ignore --desktop_file_hint flag required by Unity8
- to decide which application is starting
+Date: Fri, 29 Apr 2016 14:58:28 +0200
+Subject: [PATCH xserver 2/3] xmir: Ignore --desktop_file_hint flag required by
+ Unity8 to decide which application is starting
 
 ---
  hw/xmir/xmir.c | 3 +++
  1 file changed, 3 insertions(+)
 
+diff --git a/hw/xmir/xmir.c b/hw/xmir/xmir.c
+index 5526958..ea85f1a 100644
 --- a/hw/xmir/xmir.c
 +++ b/hw/xmir/xmir.c
-@@ -168,6 +168,9 @@ ddxProcessArgument(int argc, char *argv[
+@@ -172,6 +172,9 @@ ddxProcessArgument(int argc, char *argv[], int i)
      } else if (!strcmp(argv[i], "-novtswitch") ||
                 !strncmp(argv[i], "vt", 2)) {
          return 1;
@@ -20,3 +22,6 @@ Subject: [PATCH 3/4] xmir: Ignore --desktop_file_hint flag required by Unity8
      } else if (!strcmp(argv[i], "-fd")) {
          if (!seen_shared)
              NoListenAll = 1;
+-- 
+2.7.4
+
diff --git a/debian/patches/xmir-fixes.diff b/debian/patches/xmir-fixes.diff
deleted file mode 100644
index 1f95270..0000000
--- a/debian/patches/xmir-fixes.diff
+++ /dev/null
@@ -1,149 +0,0 @@
-Description: port xmir to 1.18
-
---- a/hw/xmir/xmir-output.c
-+++ b/hw/xmir/xmir-output.c
-@@ -327,10 +327,10 @@ xmir_output_handle_resize(struct xmir_wi
- 
-     if (xmir_screen->glamor) {
-         glamor_pixmap_private *pixmap_priv = glamor_get_pixmap_private(pixmap);
--        glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->base.fbo->fb);
-+        glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->fbo->fb);
-         glClearColor(0., 0., 0., 1.);
-         glClear(GL_COLOR_BUFFER_BIT);
--        glamor_copy_n_to_n_nf(&screen->root->drawable, &pixmap->drawable,
-+        glamor_copy(&screen->root->drawable, &pixmap->drawable,
-                               NULL, &copy_box, 1, 0, 0, FALSE, FALSE, 0, NULL);
-         glBindFramebuffer(GL_FRAMEBUFFER, 0);
-     } else {
---- a/hw/xmir/xmir.c
-+++ b/hw/xmir/xmir.c
-@@ -1246,7 +1246,7 @@ xmir_create_screen_resources(ScreenPtr s
-     if (xmir_screen->glamor && !xmir_screen->rootless) {
-         glamor_pixmap_private *pixmap_priv = glamor_get_pixmap_private(screen->devPrivate);
- 
--        glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->base.fbo->fb);
-+        glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->fbo->fb);
-         glClear(GL_COLOR_BUFFER_BIT);
-         glBindFramebuffer(GL_FRAMEBUFFER, 0);
- 
---- a/hw/xmir/xmir-glamor.c
-+++ b/hw/xmir/xmir-glamor.c
-@@ -220,7 +220,7 @@ xmir_glamor_copy_egl_tex(int fbo, Drawab
- 
-     pixmap_priv_get_scale(src_pixmap_priv, &src_xscale, &src_yscale);
- 
--    if (src_pixmap_priv->base.gl_fbo == GLAMOR_FBO_UNATTACHED)
-+    if (src_pixmap_priv->gl_fbo == GLAMOR_FBO_UNATTACHED)
-         FatalError("aeiou\n");
- 
-     glViewport(dx, dy, width + dx, height + dy);
-@@ -231,7 +231,7 @@ xmir_glamor_copy_egl_tex(int fbo, Drawab
- 
-     if (!fbo) {
-        glActiveTexture(GL_TEXTURE0);
--       glBindTexture(GL_TEXTURE_2D, src_pixmap_priv->base.fbo->tex);
-+       glBindTexture(GL_TEXTURE_2D, src_pixmap_priv->fbo->tex);
- 
-         if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP) {
-             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
-@@ -272,13 +272,8 @@ xmir_glamor_copy_egl_tex(int fbo, Drawab
-         _tx1 = v_from_x_coord_x(dst_xscale, dbox.x1);
-         _tx2 = v_from_x_coord_x(dst_xscale, dbox.x2);
- 
--        if (xmir_screen->gbm) {
--            _ty1 = v_from_x_coord_y_inverted(dst_yscale, dbox.y1);
--            _ty2 = v_from_x_coord_y_inverted(dst_yscale, dbox.y2);
--        } else {
--            _ty1 = v_from_x_coord_y(dst_yscale, dbox.y1);
--            _ty2 = v_from_x_coord_y(dst_yscale, dbox.y2);
--        }
-+        _ty1 = v_from_x_coord_y(dst_yscale, dbox.y1);
-+        _ty2 = v_from_x_coord_y(dst_yscale, dbox.y2);
- 
-         /* upper left */
-         vertices[0] = _tx1;
-@@ -317,13 +312,8 @@ xmir_glamor_copy_egl_tex(int fbo, Drawab
-         _tx1 = v_from_x_coord_x(dst_xscale, dbox.x1);
-         _tx2 = v_from_x_coord_x(dst_xscale, dbox.x2);
- 
--        if (xmir_screen->gbm) {
--            _ty1 = v_from_x_coord_y_inverted(dst_yscale, dbox.y1);
--            _ty2 = v_from_x_coord_y_inverted(dst_yscale, dbox.y2);
--        } else {
--            _ty1 = v_from_x_coord_y(dst_yscale, dbox.y1);
--            _ty2 = v_from_x_coord_y(dst_yscale, dbox.y2);
--        }
-+        _ty1 = v_from_x_coord_y(dst_yscale, dbox.y1);
-+        _ty2 = v_from_x_coord_y(dst_yscale, dbox.y2);
- 
-         /* upper right */
-         vertices[0] = _tx2;
-@@ -368,7 +358,7 @@ xmir_glamor_copy_egl_common(DrawablePtr
-     DebugF("Box: (%i,%i)->(%i,%i)\n", ext->x1, ext->y1, ext->x2, ext->y2);
- 
-     if (epoxy_has_gl_extension("GL_EXT_framebuffer_blit") && !xmir_screen->doubled && !orientation) {
--        glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, src_pixmap_priv->base.fbo->fb);
-+        glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, src_pixmap_priv->fbo->fb);
- 
-         glBlitFramebuffer(ext->x1, ext->y2, ext->x2, ext->y1,
-                           ext->x1 + dx, ext->y2 + dy, ext->x2 + dx, ext->y1 + dy,
-@@ -404,7 +394,7 @@ xmir_glamor_copy_gbm(struct xmir_screen
-         PixmapPtr from = screen->GetWindowPixmap(window);
-         glamor_pixmap_private *pixmap_priv = glamor_get_pixmap_private(back);
- 
--        glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->base.fbo->fb);
-+        glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->fbo->fb);
-         xmir_glamor_copy_egl_common(&window->drawable, from, glamor_get_pixmap_private(from),
-                                     RegionExtents(dirty),
-                                     back->drawable.width, back->drawable.height, 0, 0, xmir_win->orientation);
-@@ -607,9 +597,9 @@ xmir_glamor_copy_egl_queue(struct xmir_s
-          * rotating back and forth.
-          */
-         glamor_set_pixmap_type(src_pixmap, GLAMOR_TEXTURE_DRM);
--        src_pixmap_priv->base.fbo->external = TRUE;
-+        src_pixmap_priv->fbo->external = TRUE;
- 
--        xmir_win->image = eglCreateImageKHR(xmir_screen->egl_display, xmir_screen->egl_context, EGL_GL_TEXTURE_2D_KHR, (EGLClientBuffer)(intptr_t)src_pixmap_priv->base.fbo->tex, attribs);
-+        xmir_win->image = eglCreateImageKHR(xmir_screen->egl_display, xmir_screen->egl_context, EGL_GL_TEXTURE_2D_KHR, (EGLClientBuffer)(intptr_t)src_pixmap_priv->fbo->tex, attribs);
-         if (!xmir_win->image) {
-             GLint error;
-             ErrorF("eglCreateImageKHR failed with %x\n", eglGetError());
-@@ -1016,7 +1006,7 @@ glamor_egl_dri3_fd_name_from_tex(ScreenP
- }
- 
- unsigned int
--glamor_egl_create_argb8888_based_texture(ScreenPtr screen, int w, int h)
-+glamor_egl_create_argb8888_based_texture(ScreenPtr screen, int w, int h, Bool linear)
- {
-     return 0;
- }
-@@ -1144,10 +1134,7 @@ xmir_glamor_init(struct xmir_screen *xmi
-     }
- 
-     if (!glamor_init(screen,
--                     GLAMOR_INVERTED_Y_AXIS |
-                      GLAMOR_USE_EGL_SCREEN |
--                     GLAMOR_USE_SCREEN |
--                     GLAMOR_USE_PICTURE_SCREEN |
-                      GLAMOR_NO_DRI3)) {
-         ErrorF("Failed to initialize glamor\n");
-         return FALSE;
---- a/hw/xmir/xmir-input.c
-+++ b/hw/xmir/xmir-input.c
-@@ -378,15 +378,13 @@ xmir_window_handle_input_event(struct xm
-     case mir_input_event_type_key: {
-         MirKeyboardEvent const *kev;
-         MirKeyboardAction action;
--        ValuatorMask mask;
- 
-         kev = mir_input_event_get_keyboard_event(ev);
-         action = mir_keyboard_event_action(kev);
- 
--        valuator_mask_zero(&mask);
-         QueueKeyboardEvents(xmir_input->keyboard,
-                             action == mir_keyboard_action_up ? KeyRelease : KeyPress,
--                            mir_keyboard_event_scan_code(kev) + 8, &mask);
-+                            mir_keyboard_event_scan_code(kev) + 8);
-         break;
-     }
-     case mir_input_event_type_touch: {
diff --git a/debian/patches/xmir.patch b/debian/patches/xmir.patch
index af257ce..4e772a9 100644
--- a/debian/patches/xmir.patch
+++ b/debian/patches/xmir.patch
@@ -1,7 +1,7 @@
-From efc26decfbefc45cdb36110c019272fbaf41284f Mon Sep 17 00:00:00 2001
+From b97cd5fc8d76dcb45fac1965c8251e7d31e641b3 Mon Sep 17 00:00:00 2001
 From: Robert Ancell <robert.ancell@canonical.com>
-Date: Fri, 15 May 2015 14:58:59 +1200
-Subject: [PATCH 1/3] XMir DDX
+Date: Fri, 29 Apr 2016 14:57:53 +0200
+Subject: [PATCH xserver 1/3] XMir DDX
 
 Contributions from:
   Maarten Lankhorst <maarten.lankhorst@ubuntu.com>
@@ -22,13 +22,13 @@ Contributions from:
  hw/xmir/xmir-cursor.c       |  210 ++++++
  hw/xmir/xmir-cvt.c          |  304 +++++++++
  hw/xmir/xmir-dri2.c         |  545 +++++++++++++++
- hw/xmir/xmir-glamor.c       | 1173 ++++++++++++++++++++++++++++++++
- hw/xmir/xmir-input.c        |  566 ++++++++++++++++
+ hw/xmir/xmir-glamor.c       | 1160 ++++++++++++++++++++++++++++++++
+ hw/xmir/xmir-input.c        |  594 ++++++++++++++++
  hw/xmir/xmir-output.c       |  449 +++++++++++++
  hw/xmir/xmir-thread-proxy.c |  109 +++
  hw/xmir/xmir.c              | 1564 +++++++++++++++++++++++++++++++++++++++++++
  hw/xmir/xmir.h              |  226 +++++++
- 18 files changed, 7725 insertions(+), 2 deletions(-)
+ 18 files changed, 7740 insertions(+), 2 deletions(-)
  create mode 100644 hw/xmir/.gitignore
  create mode 100644 hw/xmir/Makefile.am
  create mode 100644 hw/xmir/dri2/Makefile.am
@@ -47,10 +47,10 @@ Contributions from:
  create mode 100644 hw/xmir/xmir.h
 
 diff --git a/configure.ac b/configure.ac
-index d8f0e74..56355fd 100644
+index 77cf234..8bf62a0 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -624,6 +624,7 @@ AC_ARG_ENABLE(xvfb,    	      AS_HELP_STRING([--enable-xvfb], [Build Xvfb server
+@@ -628,6 +628,7 @@ AC_ARG_ENABLE(xvfb,    	      AS_HELP_STRING([--enable-xvfb], [Build Xvfb server
  AC_ARG_ENABLE(xnest,   	      AS_HELP_STRING([--enable-xnest], [Build Xnest server (default: auto)]), [XNEST=$enableval], [XNEST=auto])
  AC_ARG_ENABLE(xquartz,        AS_HELP_STRING([--enable-xquartz], [Build Xquartz server for OS-X (default: auto)]), [XQUARTZ=$enableval], [XQUARTZ=auto])
  AC_ARG_ENABLE(xwayland,       AS_HELP_STRING([--enable-xwayland], [Build Xwayland server (default: auto)]), [XWAYLAND=$enableval], [XWAYLAND=auto])
@@ -58,7 +58,7 @@ index d8f0e74..56355fd 100644
  AC_ARG_ENABLE(standalone-xpbproxy, AS_HELP_STRING([--enable-standalone-xpbproxy], [Build a standalone xpbproxy (in addition to the one integrated into Xquartz as a separate thread) (default: no)]), [STANDALONE_XPBPROXY=$enableval], [STANDALONE_XPBPROXY=no])
  AC_ARG_ENABLE(xwin,    	      AS_HELP_STRING([--enable-xwin], [Build XWin server (default: auto)]), [XWIN=$enableval], [XWIN=auto])
  AC_ARG_ENABLE(glamor,         AS_HELP_STRING([--enable-glamor], [Build glamor dix module (default: no)]), [GLAMOR=$enableval], [GLAMOR=no])
-@@ -745,6 +746,7 @@ case $host_os in
+@@ -746,6 +747,7 @@ case $host_os in
  			XVFB=no
  			XNEST=no
  			XWAYLAND=no
@@ -66,7 +66,7 @@ index d8f0e74..56355fd 100644
  
  			COMPOSITE=no
  			DGA=no
-@@ -2474,6 +2476,27 @@ if test "x$XWAYLAND" = xyes; then
+@@ -2482,6 +2484,27 @@ if test "x$XWAYLAND" = xyes; then
  		     [${WAYLAND_PREFIX}/bin$PATH_SEPARATOR$PATH])
  fi
  
@@ -3799,10 +3799,10 @@ index 0000000..b24d4b9
 +}
 diff --git a/hw/xmir/xmir-glamor.c b/hw/xmir/xmir-glamor.c
 new file mode 100644
-index 0000000..2438013
+index 0000000..7ad0245
 --- /dev/null
 +++ b/hw/xmir/xmir-glamor.c
-@@ -0,0 +1,1173 @@
+@@ -0,0 +1,1160 @@
 +/*
 + * Copyright © 2015 Canonical Ltd
 + *
@@ -4025,7 +4025,7 @@ index 0000000..2438013
 +
 +    pixmap_priv_get_scale(src_pixmap_priv, &src_xscale, &src_yscale);
 +
-+    if (src_pixmap_priv->base.gl_fbo == GLAMOR_FBO_UNATTACHED)
++    if (src_pixmap_priv->gl_fbo == GLAMOR_FBO_UNATTACHED)
 +        FatalError("aeiou\n");
 +
 +    glViewport(dx, dy, width + dx, height + dy);
@@ -4036,7 +4036,7 @@ index 0000000..2438013
 +
 +    if (!fbo) {
 +       glActiveTexture(GL_TEXTURE0);
-+       glBindTexture(GL_TEXTURE_2D, src_pixmap_priv->base.fbo->tex);
++       glBindTexture(GL_TEXTURE_2D, src_pixmap_priv->fbo->tex);
 +
 +        if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP) {
 +            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
@@ -4077,13 +4077,8 @@ index 0000000..2438013
 +        _tx1 = v_from_x_coord_x(dst_xscale, dbox.x1);
 +        _tx2 = v_from_x_coord_x(dst_xscale, dbox.x2);
 +
-+        if (xmir_screen->gbm) {
-+            _ty1 = v_from_x_coord_y_inverted(dst_yscale, dbox.y1);
-+            _ty2 = v_from_x_coord_y_inverted(dst_yscale, dbox.y2);
-+        } else {
-+            _ty1 = v_from_x_coord_y(dst_yscale, dbox.y1);
-+            _ty2 = v_from_x_coord_y(dst_yscale, dbox.y2);
-+        }
++        _ty1 = v_from_x_coord_y(dst_yscale, dbox.y1);
++        _ty2 = v_from_x_coord_y(dst_yscale, dbox.y2);
 +
 +        /* upper left */
 +        vertices[0] = _tx1;
@@ -4122,13 +4117,8 @@ index 0000000..2438013
 +        _tx1 = v_from_x_coord_x(dst_xscale, dbox.x1);
 +        _tx2 = v_from_x_coord_x(dst_xscale, dbox.x2);
 +
-+        if (xmir_screen->gbm) {
-+            _ty1 = v_from_x_coord_y_inverted(dst_yscale, dbox.y1);
-+            _ty2 = v_from_x_coord_y_inverted(dst_yscale, dbox.y2);
-+        } else {
-+            _ty1 = v_from_x_coord_y(dst_yscale, dbox.y1);
-+            _ty2 = v_from_x_coord_y(dst_yscale, dbox.y2);
-+        }
++        _ty1 = v_from_x_coord_y(dst_yscale, dbox.y1);
++        _ty2 = v_from_x_coord_y(dst_yscale, dbox.y2);
 +
 +        /* upper right */
 +        vertices[0] = _tx2;
@@ -4173,7 +4163,7 @@ index 0000000..2438013
 +    DebugF("Box: (%i,%i)->(%i,%i)\n", ext->x1, ext->y1, ext->x2, ext->y2);
 +
 +    if (epoxy_has_gl_extension("GL_EXT_framebuffer_blit") && !xmir_screen->doubled && !orientation) {
-+        glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, src_pixmap_priv->base.fbo->fb);
++        glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, src_pixmap_priv->fbo->fb);
 +
 +        glBlitFramebuffer(ext->x1, ext->y2, ext->x2, ext->y1,
 +                          ext->x1 + dx, ext->y2 + dy, ext->x2 + dx, ext->y1 + dy,
@@ -4209,7 +4199,7 @@ index 0000000..2438013
 +        PixmapPtr from = screen->GetWindowPixmap(window);
 +        glamor_pixmap_private *pixmap_priv = glamor_get_pixmap_private(back);
 +
-+        glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->base.fbo->fb);
++        glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->fbo->fb);
 +        xmir_glamor_copy_egl_common(&window->drawable, from, glamor_get_pixmap_private(from),
 +                                    RegionExtents(dirty),
 +                                    back->drawable.width, back->drawable.height, 0, 0, xmir_win->orientation);
@@ -4412,9 +4402,9 @@ index 0000000..2438013
 +         * rotating back and forth.
 +         */
 +        glamor_set_pixmap_type(src_pixmap, GLAMOR_TEXTURE_DRM);
-+        src_pixmap_priv->base.fbo->external = TRUE;
++        src_pixmap_priv->fbo->external = TRUE;
 +
-+        xmir_win->image = eglCreateImageKHR(xmir_screen->egl_display, xmir_screen->egl_context, EGL_GL_TEXTURE_2D_KHR, (EGLClientBuffer)(intptr_t)src_pixmap_priv->base.fbo->tex, attribs);
++        xmir_win->image = eglCreateImageKHR(xmir_screen->egl_display, xmir_screen->egl_context, EGL_GL_TEXTURE_2D_KHR, (EGLClientBuffer)(intptr_t)src_pixmap_priv->fbo->tex, attribs);
 +        if (!xmir_win->image) {
 +            GLint error;
 +            ErrorF("eglCreateImageKHR failed with %x\n", eglGetError());
@@ -4821,7 +4811,7 @@ index 0000000..2438013
 +}
 +
 +unsigned int
-+glamor_egl_create_argb8888_based_texture(ScreenPtr screen, int w, int h)
++glamor_egl_create_argb8888_based_texture(ScreenPtr screen, int w, int h, Bool linear)
 +{
 +    return 0;
 +}
@@ -4949,10 +4939,7 @@ index 0000000..2438013
 +    }
 +
 +    if (!glamor_init(screen,
-+                     GLAMOR_INVERTED_Y_AXIS |
 +                     GLAMOR_USE_EGL_SCREEN |
-+                     GLAMOR_USE_SCREEN |
-+                     GLAMOR_USE_PICTURE_SCREEN |
 +                     GLAMOR_NO_DRI3)) {
 +        ErrorF("Failed to initialize glamor\n");
 +        return FALSE;
@@ -4978,10 +4965,10 @@ index 0000000..2438013
 +}
 diff --git a/hw/xmir/xmir-input.c b/hw/xmir/xmir-input.c
 new file mode 100644
-index 0000000..727fc56
+index 0000000..e5fd2d5
 --- /dev/null
 +++ b/hw/xmir/xmir-input.c
-@@ -0,0 +1,566 @@
+@@ -0,0 +1,594 @@
 +/*
 + * Copyright © 2015 Canonical Ltd
 + *
@@ -5362,15 +5349,13 @@ index 0000000..727fc56
 +    case mir_input_event_type_key: {
 +        MirKeyboardEvent const *kev;
 +        MirKeyboardAction action;
-+        ValuatorMask mask;
 +
 +        kev = mir_input_event_get_keyboard_event(ev);
 +        action = mir_keyboard_event_action(kev);
 +
-+        valuator_mask_zero(&mask);
 +        QueueKeyboardEvents(xmir_input->keyboard,
 +                            action == mir_keyboard_action_up ? KeyRelease : KeyPress,
-+                            mir_keyboard_event_scan_code(kev) + 8, &mask);
++                            mir_keyboard_event_scan_code(kev) + 8);
 +        break;
 +    }
 +    case mir_input_event_type_touch: {
@@ -5451,6 +5436,33 @@ index 0000000..727fc56
 +}
 +
 +static void
++xmir_handle_keymap_event(struct xmir_input *xmir_input,
++                                MirKeymapEvent const* ev)
++{
++    char * buffer = NULL;
++    size_t length = 0;
++    DeviceIntPtr master;
++    XkbDescPtr xkb;
++    XkbChangesRec changes = { 0 };
++
++    mir_keymap_event_get_keymap_buffer(ev, (char const **)&buffer, &length);
++
++    buffer[length] = '\0';
++
++    xkb = XkbCompileKeymapFromString(xmir_input->keyboard, buffer, length);
++
++    XkbUpdateDescActions(xkb, xkb->min_key_code, XkbNumKeys(xkb), &changes);
++
++    XkbDeviceApplyKeymap(xmir_input->keyboard, xkb);
++
++    master = GetMaster(xmir_input->keyboard, MASTER_KEYBOARD);
++    if (master && master->lastSlave == xmir_input->keyboard)
++        XkbDeviceApplyKeymap(master, xkb);
++
++    XkbFreeKeyboard(xkb, XkbAllComponentsMask, TRUE);
++}
++
++static void
 +xmir_handle_surface_event_in_main_thread(struct xmir_screen *xmir_screen,
 +                                         struct xmir_window *xmir_window,
 +                                         void *arg)
@@ -5490,6 +5502,9 @@ index 0000000..727fc56
 +        break;
 +    case mir_event_type_surface_output:
 +        break;
++    case mir_event_type_keymap:
++        xmir_handle_keymap_event(xmir_input, mir_event_get_keymap_event(ev));
++        break;
 +    default:
 +        ErrorF("Received an unknown %u event\n", mir_event_get_type(ev));
 +        break;
@@ -5550,7 +5565,7 @@ index 0000000..727fc56
 +}
 diff --git a/hw/xmir/xmir-output.c b/hw/xmir/xmir-output.c
 new file mode 100644
-index 0000000..bde0940
+index 0000000..f538749
 --- /dev/null
 +++ b/hw/xmir/xmir-output.c
 @@ -0,0 +1,449 @@
@@ -5883,10 +5898,10 @@ index 0000000..bde0940
 +
 +    if (xmir_screen->glamor) {
 +        glamor_pixmap_private *pixmap_priv = glamor_get_pixmap_private(pixmap);
-+        glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->base.fbo->fb);
++        glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->fbo->fb);
 +        glClearColor(0., 0., 0., 1.);
 +        glClear(GL_COLOR_BUFFER_BIT);
-+        glamor_copy_n_to_n_nf(&screen->root->drawable, &pixmap->drawable,
++        glamor_copy(&screen->root->drawable, &pixmap->drawable,
 +                              NULL, &copy_box, 1, 0, 0, FALSE, FALSE, 0, NULL);
 +        glBindFramebuffer(GL_FRAMEBUFFER, 0);
 +    } else {
@@ -6120,7 +6135,7 @@ index 0000000..dbb187f
 +}
 diff --git a/hw/xmir/xmir.c b/hw/xmir/xmir.c
 new file mode 100644
-index 0000000..033ae92
+index 0000000..5526958
 --- /dev/null
 +++ b/hw/xmir/xmir.c
 @@ -0,0 +1,1564 @@
@@ -6578,7 +6593,7 @@ index 0000000..033ae92
 +                top_normal = top;
 +            if (xmir_get_window_name(top, wm_name, sizeof wm_name))
 +                top_named = top;
-+            
++
 +            top = top->firstChild;
 +        }
 +        if (!named)
@@ -7369,7 +7384,7 @@ index 0000000..033ae92
 +    if (xmir_screen->glamor && !xmir_screen->rootless) {
 +        glamor_pixmap_private *pixmap_priv = glamor_get_pixmap_private(screen->devPrivate);
 +
-+        glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->base.fbo->fb);
++        glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->fbo->fb);
 +        glClear(GL_COLOR_BUFFER_BIT);
 +        glBindFramebuffer(GL_FRAMEBUFFER, 0);
 +
@@ -7921,5 +7936,5 @@ index 0000000..0bb4b1d
 +
 +#endif
 -- 
-2.7.0
+2.7.4
 


Reply to: