xorg-server: Changes to 'ubuntu'
debian/control | 3
debian/patches/105_nvidia_fglrx_autodetect.patch | 27
debian/patches/111_armel-drv-fallbacks.patch | 13
debian/patches/122_xext_fix_card32_overflow_in_xauth.patch | 17
debian/patches/168_glibc_trace_to_stderr.patch | 14
debian/patches/188_default_primary_to_first_busid.patch | 4
debian/patches/190_cache-xkbcomp_output_for_fast_start_up.patch | 62
debian/patches/191-Xorg-add-an-extra-module-path.patch | 58
debian/patches/208_switch_on_release.diff | 18
debian/patches/226_fall_back_to_autoconfiguration.patch | 33
debian/patches/227_null_ptr_midispcur.patch | 15
debian/patches/232-xf86compatoutput-valgrind.patch | 17
debian/patches/config-add-no-removal.patch | 20
debian/patches/disable-rotation-transform-gpuscreens.patch | 5
debian/patches/fix-detach-gpu.patch | 32
debian/patches/fix-ftbfs-ppc64el.patch | 3
debian/patches/series | 1
debian/patches/xf86-ignore-conflicting-rr-caps.patch | 12
debian/patches/xf86-inactive-gpuscreen.patch | 15
debian/patches/xfree86-no-xv-for-gpuscreens.patch | 24
debian/patches/xi2-resize-touch.patch | 3
debian/patches/xmir-rootless.patch | 296 ++++
debian/patches/xmir.patch | 630 +++-------
debian/rules | 2
debian/xserver-xorg-core.install | 8
25 files changed, 785 insertions(+), 547 deletions(-)
New commits:
commit b62f95454214b1d4a44bc8faa39b4cf341022323
Author: Robert Ancell <robert.ancell@canonical.com>
Date: Wed Jul 15 14:06:27 2015 +1200
Simplify man page install
diff --git a/debian/xserver-xorg-core.install b/debian/xserver-xorg-core.install
index 6c06117..bf568df 100644
--- a/debian/xserver-xorg-core.install
+++ b/debian/xserver-xorg-core.install
@@ -1,13 +1,11 @@
main/usr/lib/xorg/modules usr/lib/xorg
main/usr/bin/Xorg usr/bin
main/usr/share/man/man1/Xorg.1 usr/share/man/man1
-main/usr/share/man/man4/exa.4 usr/share/man/man4
-main/usr/share/man/man4/fbdevhw.4 usr/share/man/man4
+main/usr/share/man/man4 usr/share/man/
main/usr/share/man/man5/xorg.conf.5 usr/share/man/man5
main/usr/share/man/man5/xorg.conf.d.5 usr/share/man/man5
main/usr/bin/cvt usr/bin
main/usr/bin/gtf usr/bin
main/usr/share/man/man1/cvt.1 usr/share/man/man1
main/usr/share/man/man1/gtf.1 usr/share/man/man1
-main/usr/share/man/man4/modesetting.4 usr/share/man/man4
main/usr/share/X11/xorg.conf.d usr/share/X11/
commit d85da0ee3b58fc457b375c698fb994378f03da05
Author: Robert Ancell <robert.ancell@canonical.com>
Date: Wed Jul 15 14:05:37 2015 +1200
Update XMir patches
diff --git a/debian/control b/debian/control
index b90b872..ca853b3 100644
--- a/debian/control
+++ b/debian/control
@@ -99,7 +99,7 @@ Build-Depends:
libwayland-dev [linux-any],
# XMir
libmirclient-dev (>= 0.13.1) [!arm64 !powerpc !ppc64el],
- libatomic-ops-dev,
+ mir-client-platform-mesa-dev,
Standards-Version: 3.9.2
Vcs-Git: git://git.debian.org/git/pkg-xorg/xserver/xorg-server
Vcs-Browser: http://git.debian.org/?p=pkg-xorg/xserver/xorg-server.git
@@ -211,6 +211,7 @@ Depends:
libpciaccess-dev,
mesa-common-dev,
libmirclient-dev [!arm64 !powerpc !ppc64el],
+ mir-client-platform-mesa-dev,
${misc:Depends},
Description: Xorg X server - development files
This package provides development files for the X.Org ('Xorg') X server.
diff --git a/debian/patches/series b/debian/patches/series
index ad76035..cf2fcbe 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -47,5 +47,6 @@ disable-rotation-transform-gpuscreens.patch
fix-ftbfs-ppc64el.patch
xmir.patch
+xmir-rootless.patch
drm_device_keep_trying.patch
xi2-resize-touch.patch
diff --git a/debian/patches/xmir-rootless.patch b/debian/patches/xmir-rootless.patch
new file mode 100644
index 0000000..82b20b1
--- /dev/null
+++ b/debian/patches/xmir-rootless.patch
@@ -0,0 +1,296 @@
+From ae3f0599114144c26ab1de02320f000c86b2d042 Mon Sep 17 00:00:00 2001
+From: Robert Ancell <robert.ancell@canonical.com>
+Date: Thu, 9 Jul 2015 14:03:49 +1200
+Subject: [PATCH 2/3] xmir: Support rootless
+
+Contributions from:
+ Maarten Lankhorst <maarten.lankhorst@ubuntu.com>
+ Robert Ancell <robert.ancell@canonical.com>
+---
+ composite/compalloc.c | 6 ++++++
+ composite/compositeext.h | 3 +++
+ hw/xmir/xmir-cursor.c | 5 ++++-
+ hw/xmir/xmir-dri2.c | 4 ++++
+ hw/xmir/xmir-input.c | 34 ++++++++++++++++++++++++++++++++++
+ hw/xmir/xmir-output.c | 8 ++++++++
+ hw/xmir/xmir.c | 48 +++++++++++++++++++++++++++++++++++++++---------
+ hw/xmir/xmir.h | 2 +-
+ 8 files changed, 99 insertions(+), 11 deletions(-)
+
+diff --git a/composite/compalloc.c b/composite/compalloc.c
+index 8daded0..fb1b476 100644
+--- a/composite/compalloc.c
++++ b/composite/compalloc.c
+@@ -46,6 +46,7 @@
+ #endif
+
+ #include "compint.h"
++#include "compositeext.h"
+
+ static void
+ compScreenUpdate(ScreenPtr pScreen)
+@@ -411,6 +412,11 @@ compRedirectSubwindows(ClientPtr pClient, WindowPtr pWin, int update)
+ return Success;
+ }
+
++int CompositeRedirectSubwindows (WindowPtr pWin, int update)
++{
++ return compRedirectSubwindows (serverClient, pWin, update);
++}
++
+ /*
+ * Free one of the per-client per-subwindows resources,
+ * which frees one redirect per subwindow
+diff --git a/composite/compositeext.h b/composite/compositeext.h
+index b96cb1d..f279013 100644
+--- a/composite/compositeext.h
++++ b/composite/compositeext.h
+@@ -35,6 +35,9 @@ extern _X_EXPORT Bool CompositeRegisterAlternateVisuals(ScreenPtr pScreen,
+ VisualID * vids,
+ int nVisuals);
+
++extern _X_EXPORT int CompositeRedirectSubwindows(WindowPtr pWin,
++ int update);
++
+ extern _X_EXPORT Bool CompositeRegisterImplicitRedirectionException(ScreenPtr pScreen,
+ VisualID parentVisual,
+ VisualID winVisual);
+diff --git a/hw/xmir/xmir-cursor.c b/hw/xmir/xmir-cursor.c
+index 143f008..dd9a8a7 100644
+--- a/hw/xmir/xmir-cursor.c
++++ b/hw/xmir/xmir-cursor.c
+@@ -131,7 +131,10 @@ xmir_input_set_cursor(struct xmir_input *xmir_input)
+ config = mir_cursor_configuration_from_buffer_stream(stream, cursor->bits->xhot, cursor->bits->yhot);
+
+ apply:
+- mir_wait_for(mir_surface_configure_cursor(xmir_window_get(xmir_input->xmir_screen->screen->root)->surface, config));
++ if (!xmir_input->xmir_screen->rootless)
++ mir_wait_for(mir_surface_configure_cursor(xmir_window_get(xmir_input->xmir_screen->screen->root)->surface, config));
++ else if (xmir_input->focus_window)
++ mir_wait_for(mir_surface_configure_cursor(xmir_input->focus_window->surface, config));
+ mir_cursor_configuration_destroy(config);
+
+ if (stream)
+diff --git a/hw/xmir/xmir-dri2.c b/hw/xmir/xmir-dri2.c
+index 21de4f9..b88d089 100644
+--- a/hw/xmir/xmir-dri2.c
++++ b/hw/xmir/xmir-dri2.c
+@@ -90,8 +90,12 @@ static struct xmir_window *
+ xmir_window_swappable_parent(WindowPtr win)
+ {
+ ScreenPtr screen = win->drawable.pScreen;
++ struct xmir_screen *xmir_screen = xmir_screen_get(screen);
+ PixmapPtr root, pixmap;
+
++ if (xmir_screen->rootless)
++ return NULL;
++
+ root = screen->GetScreenPixmap(screen);
+ pixmap = screen->GetWindowPixmap(win);
+
+diff --git a/hw/xmir/xmir-input.c b/hw/xmir/xmir-input.c
+index 855b6d3..4de3fe0 100644
+--- a/hw/xmir/xmir-input.c
++++ b/hw/xmir/xmir-input.c
+@@ -307,6 +307,37 @@ DDXRingBell(int volume, int pitch, int duration)
+ {
+ }
+
++static WindowPtr
++xmir_xy_to_window(ScreenPtr screen, SpritePtr sprite, int x, int y)
++{
++ struct xmir_input *xmir_input = NULL;
++ DeviceIntPtr device;
++
++ for (device = inputInfo.devices; device; device = device->next) {
++ if (device->deviceProc == xmir_pointer_proc &&
++ device->spriteInfo->sprite == sprite) {
++ xmir_input = device->public.devicePrivate;
++ break;
++ }
++ }
++
++ if (xmir_input == NULL) {
++ /* XTEST device */
++ sprite->spriteTraceGood = 1;
++ return sprite->spriteTrace[0];
++ }
++
++ if (xmir_input->focus_window) {
++ sprite->spriteTraceGood = 2;
++ sprite->spriteTrace[1] = xmir_input->focus_window->window;
++ return miSpriteTrace(sprite, x, y);
++ }
++ else {
++ sprite->spriteTraceGood = 1;
++ return sprite->spriteTrace[0];
++ }
++}
++
+ static void
+ fake_touch_move(struct xmir_input *xmir_input, struct xmir_window *xmir_window, int sx, int sy)
+ {
+@@ -476,6 +507,9 @@ InitInput(int argc, char *argv[])
+ struct xmir_screen *xmir_screen = xmir_screen_get(pScreen);
+ struct xmir_input *xmir_input;
+
++ if (xmir_screen->rootless)
++ pScreen->XYToWindow = xmir_xy_to_window;
++
+ mieqInit();
+
+ xmir_input = calloc(1, sizeof(*xmir_input));
+diff --git a/hw/xmir/xmir-output.c b/hw/xmir/xmir-output.c
+index f958e87..c1770d5 100644
+--- a/hw/xmir/xmir-output.c
++++ b/hw/xmir/xmir-output.c
+@@ -78,6 +78,9 @@ xmir_output_dpms(struct xmir_screen *xmir_screen, int mode)
+ MirPowerMode mir_mode = mir_power_mode_on;
+ Bool unchanged = TRUE;
+
++ if (xmir_screen->rootless)
++ return FALSE;
++
+ switch (mode) {
+ case DPMSModeOn:
+ mir_mode = mir_power_mode_on;
+@@ -306,6 +309,11 @@ xmir_output_handle_resize(struct xmir_window *xmir_window, int width, int height
+ xmir_window->image = NULL;
+ }
+
++ if (xmir_screen->rootless) {
++ screen->ResizeWindow(window, window->drawable.x, window->drawable.y, window_width, window_height, NULL);
++ return;
++ }
++
+ if (!xmir_screen->windowed) {
+ xmir_screen->windowed = 1;
+
+diff --git a/hw/xmir/xmir.c b/hw/xmir/xmir.c
+index ce30727..a598c0d 100644
+--- a/hw/xmir/xmir.c
++++ b/hw/xmir/xmir.c
+@@ -33,6 +33,7 @@
+ #include <selection.h>
+ #include <micmap.h>
+ #include <misyncshm.h>
++#include <compositeext.h>
+ #include <glx_extinit.h>
+
+ #include <mir_toolkit/mir_surface.h>
+@@ -91,6 +92,7 @@ ddxBeforeReset(void)
+ void
+ ddxUseMsg(void)
+ {
++ ErrorF("-rootless run rootless, requires wm support\n");
+ ErrorF("-sw disable glamor rendering\n");
+ ErrorF("-egl force use of EGL calls, disables DRI2 pass-through\n");
+ ErrorF("-egl_sync same as -egl, but with synchronous page flips.\n");
+@@ -107,7 +109,8 @@ ddxProcessArgument(int argc, char *argv[], int i)
+ {
+ static int seen_shared;
+
+- if (strcmp(argv[i], "-sw") == 0 ||
++ if (strcmp(argv[i], "-rootless") == 0 ||
++ strcmp(argv[i], "-sw") == 0 ||
+ strcmp(argv[i], "-egl") == 0 ||
+ strcmp(argv[i], "-egl_sync") == 0 ||
+ strcmp(argv[i], "-2x") == 0 ||
+@@ -424,8 +427,21 @@ xmir_realize_window(WindowPtr window)
+ xmir_screen->RealizeWindow = screen->RealizeWindow;
+ screen->RealizeWindow = xmir_realize_window;
+
+- if (window->parent)
+- return ret;
++ if (xmir_screen->rootless) {
++ if (!window->parent) {
++ CompositeRedirectSubwindows(window, /*CompositeRedirectManual*/TRUE); // WTF? Where is this defined
++ RegionNull(&window->clipList);
++ RegionNull(&window->borderClip);
++ RegionNull(&window->winSize);
++ }
++
++ if (window->redirectDraw != RedirectDrawManual)
++ return ret;
++ }
++ else {
++ if (window->parent)
++ return ret;
++ }
+
+ spec = mir_connection_create_spec_for_normal_surface(xmir_screen->conn,
+ mir_width,
+@@ -530,8 +546,15 @@ xmir_handle_surface_event(struct xmir_window *xmir_window, MirSurfaceAttrib attr
+ void
+ xmir_close_surface(struct xmir_window *xmir_window)
+ {
+- ErrorF("Root window closed, shutting down Xmir\n");
+- GiveUp(0);
++ WindowPtr window = xmir_window->window;
++ struct xmir_screen *xmir_screen = xmir_screen_get(window->drawable.pScreen);
++
++ if (!xmir_screen->rootless) {
++ ErrorF("Root window closed, shutting down Xmir\n");
++ GiveUp(0);
++ }
++
++ DeleteWindow(window, 1);
+ }
+
+ static void
+@@ -663,7 +686,8 @@ xmir_is_unblank(int mode)
+ Bool
+ DPMSSupported(void)
+ {
+- return TRUE;
++ struct xmir_screen *xmir_screen = xmir_screen_get(screenInfo.screens[0]);
++ return !xmir_screen->rootless;
+ }
+
+ int
+@@ -732,12 +756,16 @@ xmir_create_screen_resources(ScreenPtr screen)
+ if (!ret)
+ return ret;
+
+- screen->devPrivate = screen->CreatePixmap(screen, screen->width, screen->height, screen->rootDepth, CREATE_PIXMAP_USAGE_BACKING_PIXMAP);
++ if (!xmir_screen->rootless)
++ screen->devPrivate = screen->CreatePixmap(screen, screen->width, screen->height, screen->rootDepth, CREATE_PIXMAP_USAGE_BACKING_PIXMAP);
++ else
++ screen->devPrivate = fbCreatePixmap(screen, 0, 0, screen->rootDepth, 0);
++
+ if (!screen->devPrivate)
+ return FALSE;
+
+ #ifdef GLAMOR_HAS_GBM
+- if (xmir_screen->glamor) {
++ 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);
+@@ -819,7 +847,9 @@ xmir_screen_init(ScreenPtr pScreen, int argc, char **argv)
+ xmir_screen->glamor = 1;
+
+ for (i = 1; i < argc; i++) {
+- if (strcmp(argv[i], "-mir") == 0) {
++ if (strcmp(argv[i], "-rootless") == 0) {
++ xmir_screen->rootless = 1;
++ } else if (strcmp(argv[i], "-mir") == 0) {
+ appid = argv[++i];
+ } else if (strcmp(argv[i], "-mirSocket") == 0) {
+ socket = argv[++i];
+diff --git a/hw/xmir/xmir.h b/hw/xmir/xmir.h
+index e43fa40..b67f3a1 100644
+--- a/hw/xmir/xmir.h
++++ b/hw/xmir/xmir.h
+@@ -53,7 +53,7 @@
+ struct xmir_screen {
+ ScreenPtr screen;
+
+- int depth, windowed, glamor, doubled;
++ int depth, rootless, windowed, glamor, doubled;
+
+ CreateScreenResourcesProcPtr CreateScreenResources;
+ CloseScreenProcPtr CloseScreen;
+--
+2.1.4
+
diff --git a/debian/patches/xmir.patch b/debian/patches/xmir.patch
index ad40d3a..06f0266 100644
--- a/debian/patches/xmir.patch
+++ b/debian/patches/xmir.patch
@@ -1,13 +1,15 @@
-From da18c3b8c7bd4ce3a2a1210d425272cbded19246 Mon Sep 17 00:00:00 2001
+From df6cf00a92b45129af1f187924b664a1ff64408e 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 4/5] Add XMir
+Subject: [PATCH 1/3] XMir DDX
+Contributions from:
+ Maarten Lankhorst <maarten.lankhorst@ubuntu.com>
+ Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
+ Robert Ancell <robert.ancell@canonical.com>
+ Andreas Pokorny <andreas.pokorny@canonical.com>
---
- composite/compalloc.c | 6 +
- composite/compositeext.h | 3 +
configure.ac | 25 +
- glx/glxdri2.c | 16 +-
hw/Makefile.am | 9 +-
hw/xmir/.gitignore | 1 +
hw/xmir/Makefile.am | 61 ++
@@ -16,16 +18,16 @@ Subject: [PATCH 4/5] Add XMir
hw/xmir/dri2/dri2.h | 364 +++++++++++
hw/xmir/dri2/dri2ext.c | 683 +++++++++++++++++++++
hw/xmir/dri2/dri2int.h | 26 +
- hw/xmir/xmir-cursor.c | 214 +++++++
+ hw/xmir/xmir-cursor.c | 211 +++++++
hw/xmir/xmir-cvt.c | 304 ++++++++++
- hw/xmir/xmir-dri2.c | 473 +++++++++++++++
- hw/xmir/xmir-glamor.c | 1229 +++++++++++++++++++++++++++++++++++++
- hw/xmir/xmir-input.c | 539 +++++++++++++++++
- hw/xmir/xmir-output.c | 454 ++++++++++++++
+ hw/xmir/xmir-dri2.c | 529 ++++++++++++++++
+ hw/xmir/xmir-glamor.c | 1187 ++++++++++++++++++++++++++++++++++++
+ hw/xmir/xmir-input.c | 505 ++++++++++++++++
+ hw/xmir/xmir-output.c | 444 ++++++++++++++
hw/xmir/xmir-thread-proxy.c | 132 ++++
- hw/xmir/xmir.c | 1013 +++++++++++++++++++++++++++++++
+ hw/xmir/xmir.c | 983 ++++++++++++++++++++++++++++++
hw/xmir/xmir.h | 211 +++++++
- 21 files changed, 7167 insertions(+), 8 deletions(-)
+ 18 files changed, 7085 insertions(+), 2 deletions(-)
create mode 100644 hw/xmir/.gitignore
create mode 100644 hw/xmir/Makefile.am
create mode 100644 hw/xmir/dri2/Makefile.am
@@ -43,49 +45,11 @@ Subject: [PATCH 4/5] Add XMir
create mode 100644 hw/xmir/xmir.c
create mode 100644 hw/xmir/xmir.h
-diff --git a/composite/compalloc.c b/composite/compalloc.c
-index 8daded0..fb1b476 100644
---- a/composite/compalloc.c
-+++ b/composite/compalloc.c
-@@ -46,6 +46,7 @@
- #endif
-
- #include "compint.h"
-+#include "compositeext.h"
-
- static void
- compScreenUpdate(ScreenPtr pScreen)
-@@ -411,6 +412,11 @@ compRedirectSubwindows(ClientPtr pClient, WindowPtr pWin, int update)
- return Success;
- }
-
-+int CompositeRedirectSubwindows (WindowPtr pWin, int update)
-+{
-+ return compRedirectSubwindows (serverClient, pWin, update);
-+}
-+
- /*
- * Free one of the per-client per-subwindows resources,
- * which frees one redirect per subwindow
-diff --git a/composite/compositeext.h b/composite/compositeext.h
-index b96cb1d..f279013 100644
---- a/composite/compositeext.h
-+++ b/composite/compositeext.h
-@@ -35,6 +35,9 @@ extern _X_EXPORT Bool CompositeRegisterAlternateVisuals(ScreenPtr pScreen,
- VisualID * vids,
- int nVisuals);
-
-+extern _X_EXPORT int CompositeRedirectSubwindows(WindowPtr pWin,
-+ int update);
-+
- extern _X_EXPORT Bool CompositeRegisterImplicitRedirectionException(ScreenPtr pScreen,
- VisualID parentVisual,
- VisualID winVisual);
-diff --git a/configure.ac b/configure.ac
-index 4e47bbc..7a42775 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -624,6 +624,7 @@ AC_ARG_ENABLE(xvfb, AS_HELP_STRING([--enable-xvfb], [Build Xvfb server
+Index: xorg-server-1.17.2/configure.ac
+===================================================================
+--- xorg-server-1.17.2.orig/configure.ac
++++ xorg-server-1.17.2/configure.ac
+@@ -629,6 +629,7 @@ AC_ARG_ENABLE(xvfb, AS_HELP_ST
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])
@@ -93,7 +57,7 @@ index 4e47bbc..7a42775 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
+@@ -750,6 +751,7 @@ case $host_os in
XVFB=no
XNEST=no
XWAYLAND=no
@@ -101,7 +65,7 @@ index 4e47bbc..7a42775 100644
COMPOSITE=no
DGA=no
-@@ -2472,6 +2474,27 @@ if test "x$XWAYLAND" = xyes; then
+@@ -2495,6 +2497,27 @@ if test "x$XWAYLAND" = xyes; then
[${WAYLAND_PREFIX}/bin$PATH_SEPARATOR$PATH])
fi
@@ -129,7 +93,7 @@ index 4e47bbc..7a42775 100644
dnl and the rest of these are generic, so they're in config.h
dnl
-@@ -2620,6 +2643,8 @@ hw/kdrive/fbdev/Makefile
+@@ -2643,6 +2666,8 @@ hw/kdrive/fbdev/Makefile
hw/kdrive/linux/Makefile
hw/kdrive/src/Makefile
hw/xwayland/Makefile
@@ -138,44 +102,10 @@ index 4e47bbc..7a42775 100644
test/Makefile
test/xi1/Makefile
test/xi2/Makefile
-diff --git a/glx/glxdri2.c b/glx/glxdri2.c
-index bcd57a4..32bfb1b 100644
---- a/glx/glxdri2.c
-+++ b/glx/glxdri2.c
-@@ -361,8 +361,10 @@ __glXDRIscreenDestroy(__GLXscreen * baseScreen)
- free(screen->driConfigs);
- }
-
-- pScrn->EnterVT = screen->enterVT;
-- pScrn->LeaveVT = screen->leaveVT;
-+ if (pScrn) {
-+ pScrn->EnterVT = screen->enterVT;
-+ pScrn->LeaveVT = screen->leaveVT;
-+ }
-
- free(screen);
- }
-@@ -1007,10 +1009,12 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
- screen->base.GLXmajor = 1;
- screen->base.GLXminor = 4;
-
-- screen->enterVT = pScrn->EnterVT;
-- pScrn->EnterVT = glxDRIEnterVT;
-- screen->leaveVT = pScrn->LeaveVT;
-- pScrn->LeaveVT = glxDRILeaveVT;
-+ if (pScrn) {
-+ screen->enterVT = pScrn->EnterVT;
-+ pScrn->EnterVT = glxDRIEnterVT;
-+ screen->leaveVT = pScrn->LeaveVT;
-+ pScrn->LeaveVT = glxDRILeaveVT;
-+ }
-
- __glXsetGetProcAddress(glXGetProcAddressARB);
-
-diff --git a/hw/Makefile.am b/hw/Makefile.am
-index 19895dc..b7b958c 100644
---- a/hw/Makefile.am
-+++ b/hw/Makefile.am
+Index: xorg-server-1.17.2/hw/Makefile.am
+===================================================================
+--- xorg-server-1.17.2.orig/hw/Makefile.am
++++ xorg-server-1.17.2/hw/Makefile.am
@@ -30,6 +30,10 @@ if XWAYLAND
XWAYLAND_SUBDIRS = xwayland
endif
@@ -200,18 +130,16 @@ index 19895dc..b7b958c 100644
relink:
$(AM_V_at)for i in $(SUBDIRS) ; do $(MAKE) -C $$i relink || exit 1 ; done
-diff --git a/hw/xmir/.gitignore b/hw/xmir/.gitignore
-new file mode 100644
-index 0000000..b6a16d4
+Index: xorg-server-1.17.2/hw/xmir/.gitignore
+===================================================================
--- /dev/null
-+++ b/hw/xmir/.gitignore
++++ xorg-server-1.17.2/hw/xmir/.gitignore
@@ -0,0 +1 @@
+Xmir
-diff --git a/hw/xmir/Makefile.am b/hw/xmir/Makefile.am
-new file mode 100644
-index 0000000..e494091
+Index: xorg-server-1.17.2/hw/xmir/Makefile.am
+===================================================================
--- /dev/null
-+++ b/hw/xmir/Makefile.am
++++ xorg-server-1.17.2/hw/xmir/Makefile.am
@@ -0,0 +1,61 @@
+bin_PROGRAMS = Xmir
+
@@ -223,6 +151,7 @@ index 0000000..e494091
+ -I$(top_srcdir)/glamor \
+ -I$(srcdir)/dri2 \
+ -I$(top_srcdir)/glx \
++ -I$(top_srcdir)/hw/xfree86/common \
+ -DHAVE_DIX_CONFIG_H \
+ $(XMIRMODULES_CFLAGS) \
+ $(DIX_CFLAGS) \
@@ -264,7 +193,6 @@ index 0000000..e494091
+Xmir_LDADD += dri2/libdri2.la
+endif
+
-+#dnl FIXME: Needed?
+if AIGLX_DRI_LOADER
+aiglx_lib = $(top_builddir)/glx/libglxdri.la
+if NO_UNDEFINED
@@ -274,11 +202,10 @@ index 0000000..e494091
+
+relink:
+ $(AM_V_at)rm -f Xmir$(EXEEXT) && $(MAKE) Xmir$(EXEEXT)
-diff --git a/hw/xmir/dri2/Makefile.am b/hw/xmir/dri2/Makefile.am
-new file mode 100644
-index 0000000..696240c
+Index: xorg-server-1.17.2/hw/xmir/dri2/Makefile.am
+===================================================================
--- /dev/null
-+++ b/hw/xmir/dri2/Makefile.am
++++ xorg-server-1.17.2/hw/xmir/dri2/Makefile.am
@@ -0,0 +1,14 @@
+noinst_LTLIBRARIES = libdri2.la
+
@@ -294,11 +221,10 @@ index 0000000..696240c
+ dri2ext.c \
+ dri2int.h
+
-diff --git a/hw/xmir/dri2/dri2.c b/hw/xmir/dri2/dri2.c
-new file mode 100644
-index 0000000..6aa19ba
+Index: xorg-server-1.17.2/hw/xmir/dri2/dri2.c
+===================================================================
--- /dev/null
-+++ b/hw/xmir/dri2/dri2.c
++++ xorg-server-1.17.2/hw/xmir/dri2/dri2.c
@@ -0,0 +1,1398 @@
+/*
+ * Copyright © 2007, 2008 Red Hat, Inc.
@@ -1698,11 +1624,10 @@ index 0000000..6aa19ba
+ *is_param_recognized = FALSE;
+ return Success;
+}
-diff --git a/hw/xmir/dri2/dri2.h b/hw/xmir/dri2/dri2.h
-new file mode 100644
-index 0000000..318898b
+Index: xorg-server-1.17.2/hw/xmir/dri2/dri2.h
+===================================================================
--- /dev/null
-+++ b/hw/xmir/dri2/dri2.h
++++ xorg-server-1.17.2/hw/xmir/dri2/dri2.h
@@ -0,0 +1,364 @@
+/*
+ * Copyright © 2007 Red Hat, Inc.
@@ -2068,11 +1993,10 @@ index 0000000..318898b
+extern Bool noDRI2Extension;
+
+#endif
-diff --git a/hw/xmir/dri2/dri2ext.c b/hw/xmir/dri2/dri2ext.c
-new file mode 100644
-index 0000000..befbb82
+Index: xorg-server-1.17.2/hw/xmir/dri2/dri2ext.c
+===================================================================
--- /dev/null
-+++ b/hw/xmir/dri2/dri2ext.c
++++ xorg-server-1.17.2/hw/xmir/dri2/dri2ext.c
@@ -0,0 +1,683 @@
+/*
+ * Copyright © 2008 Red Hat, Inc.
@@ -2757,11 +2681,10 @@ index 0000000..befbb82
+
+ DRI2ModuleSetup();
+}
-diff --git a/hw/xmir/dri2/dri2int.h b/hw/xmir/dri2/dri2int.h
-new file mode 100644
-index 0000000..7f53eba
+Index: xorg-server-1.17.2/hw/xmir/dri2/dri2int.h
+===================================================================
--- /dev/null
-+++ b/hw/xmir/dri2/dri2int.h
++++ xorg-server-1.17.2/hw/xmir/dri2/dri2int.h
@@ -0,0 +1,26 @@
+/*
+ * Copyright © 2011 Daniel Stone
@@ -2789,12 +2712,11 @@ index 0000000..7f53eba
+ */
+
+extern Bool DRI2ModuleSetup(void);
-diff --git a/hw/xmir/xmir-cursor.c b/hw/xmir/xmir-cursor.c
-new file mode 100644
-index 0000000..dd9a8a7
+Index: xorg-server-1.17.2/hw/xmir/xmir-cursor.c
+===================================================================
--- /dev/null
-+++ b/hw/xmir/xmir-cursor.c
-@@ -0,0 +1,214 @@
++++ xorg-server-1.17.2/hw/xmir/xmir-cursor.c
+@@ -0,0 +1,211 @@
+/*
+ * Copyright © 2015 Canonical Ltd
+ *
@@ -2928,10 +2850,7 @@ index 0000000..dd9a8a7
+ config = mir_cursor_configuration_from_buffer_stream(stream, cursor->bits->xhot, cursor->bits->yhot);
+
+apply:
-+ if (!xmir_input->xmir_screen->rootless)
-+ mir_wait_for(mir_surface_configure_cursor(xmir_window_get(xmir_input->xmir_screen->screen->root)->surface, config));
-+ else if (xmir_input->focus_window)
-+ mir_wait_for(mir_surface_configure_cursor(xmir_input->focus_window->surface, config));
++ mir_wait_for(mir_surface_configure_cursor(xmir_window_get(xmir_input->xmir_screen->screen->root)->surface, config));
+ mir_cursor_configuration_destroy(config);
+
+ if (stream)
@@ -3009,11 +2928,10 @@ index 0000000..dd9a8a7
+ &xmir_pointer_sprite_funcs,
+ &xmir_pointer_screen_funcs, TRUE);
+}
-diff --git a/hw/xmir/xmir-cvt.c b/hw/xmir/xmir-cvt.c
-new file mode 100644
-index 0000000..6070d77
+Index: xorg-server-1.17.2/hw/xmir/xmir-cvt.c
+===================================================================
--- /dev/null
-+++ b/hw/xmir/xmir-cvt.c
++++ xorg-server-1.17.2/hw/xmir/xmir-cvt.c
@@ -0,0 +1,304 @@
+/* Copied from hw/xfree86/modes/xf86cvt.c into xmir DDX and
+ * changed to generate an RRMode */
@@ -3319,12 +3237,36 @@ index 0000000..6070d77
+
+ return RRModeGet(&modeinfo, name);
+}
-diff --git a/hw/xmir/xmir-dri2.c b/hw/xmir/xmir-dri2.c
-new file mode 100644
-index 0000000..a98c37b
+Index: xorg-server-1.17.2/hw/xmir/xmir-dri2.c
+===================================================================
--- /dev/null
-+++ b/hw/xmir/xmir-dri2.c
-@@ -0,0 +1,473 @@
++++ xorg-server-1.17.2/hw/xmir/xmir-dri2.c
+@@ -0,0 +1,529 @@
++/*
++ * Copyright © 2015 Canonical Ltd
++ *
++ * Permission to use, copy, modify, distribute, and sell this software
++ * and its documentation for any purpose is hereby granted without
++ * fee, provided that the above copyright notice appear in all copies
++ * and that both that copyright notice and this permission notice
++ * appear in supporting documentation, and that the name of the
++ * copyright holders not be used in advertising or publicity
++ * pertaining to distribution of the software without specific,
++ * written prior permission. The copyright holders make no
++ * representations about the suitability of this software for any
++ * purpose. It is provided "as is" without express or implied
++ * warranty.
++ *
++ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
++ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
++ * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
++ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
++ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
++ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
++ * SOFTWARE.
++ */
++
+#include "glamor_priv.h"
+#include "glamor_transform.h"
+#include "xmir.h"
@@ -3338,7 +3280,8 @@ index 0000000..a98c37b
+#include <gbm.h>
+#include <epoxy/egl.h>
+#include <epoxy/gl.h>
-+#include <mir_toolkit/mir_client_library_drm.h>
++#include <mir_toolkit/mir_connection.h>
++#include <mir_toolkit/mesa/platform_operation.h>
+
+/* XMir dri2 support:
+ *
@@ -3375,12 +3318,6 @@ index 0000000..a98c37b
+ return 0;
+}
+
-+static void auth_cb(int status, void *ctx)
-+{
-+ int *ret = ctx;
-+ *ret = status;
-+}
-+
+static Bool
+xmir_dri2_flink(int drm_fd, unsigned int handle, unsigned int *name)
+{
@@ -3397,12 +3334,8 @@ index 0000000..a98c37b
+xmir_window_swappable_parent(WindowPtr win)
+{
+ ScreenPtr screen = win->drawable.pScreen;
-+ struct xmir_screen *xmir_screen = xmir_screen_get(screen);
+ PixmapPtr root, pixmap;
+
-+ if (xmir_screen->rootless)
-+ return NULL;
-+
+ root = screen->GetScreenPixmap(screen);
+ pixmap = screen->GetWindowPixmap(win);
+
@@ -3463,14 +3396,54 @@ index 0000000..a98c37b
+ xmir_dri2_flink(xmir_screen->drm_fd, gbm_bo_get_handle(bo).u32, &buf->name);
+}
+
++static void
++xmir_dri2_auth_magic_reply(MirConnection* con, MirPlatformMessage* reply, Bool* ret)
++{
++ struct MirMesaAuthMagicResponse const* response;
++ unsigned int opcode = mir_platform_message_get_opcode(reply);
++ MirPlatformMessageData data = mir_platform_message_get_data(reply);
++
++ *ret = 0;
++ response = data.data;
++
++ if (auth_magic != opcode ||
++ data.size != sizeof response ||
++ response == NULL)
++ {
++ mir_platform_message_release(reply);
++ return;
++ }
++
++ /* status == 0 indciates success */
++ if (response->status == 0)
++ *ret = 1;
++ mir_platform_message_release(reply);
++}
++
+static Bool
+xmir_dri2_auth_magic(ScreenPtr screen, uint32_t magic)
+{
+ struct xmir_screen *xmir_screen = xmir_screen_get(screen);
-+ int ret = 0;
++ Bool ret = 0;
++ MirPlatformMessage *msg = NULL;
++
++ if (!is_fd_render_node(xmir_screen->drm_fd)) {
++ struct MirMesaAuthMagicRequest req = {
++ .magic = magic
++ };
++ msg = mir_platform_message_create(auth_magic);
++
++ if (msg == NULL)
++ return ret;
+
-+ if (!is_fd_render_node(xmir_screen->drm_fd))
-+ mir_wait_for(mir_connection_drm_auth_magic(xmir_screen->conn, magic, auth_cb, &ret));
++ mir_platform_message_set_data(msg, &req, sizeof req);
++ mir_wait_for(mir_connection_platform_operation(
++ xmir_screen->conn,
++ msg,
++ (mir_platform_operation_callback)&xmir_dri2_auth_magic_reply,
++ &ret));
++ mir_platform_message_release(msg);
++ }
+
+ return ret;
+}
@@ -3521,7 +3494,7 @@ index 0000000..a98c37b
+ bo = xmir_pixmap->bo;
+ break;
+ }
-+ /* fall-through */
++ /* Fall-through */
+ case DRI2BufferFrontLeft:
+ xmir_pixmap = xmir_pixmap_get(pixmap);
+
@@ -3586,7 +3559,7 @@ index 0000000..a98c37b
+ else if (src->attachment == DRI2BufferFrontLeft && dest->attachment == DRI2BufferFakeFrontLeft)
+ ErrorF("glXWaitX\n");
+ else {
-+ /* no swap interval, copy to front */
++ /* No swap interval, copy to front */
+ int dx, dy;
+ PixmapPtr dsrc = src->driverPrivate;
+ PixmapPtr pixmap;
@@ -3626,7 +3599,7 @@ index 0000000..a98c37b
+ RegionRec region;
+ int ret = 1;
+
-+ /* noop on a glxpixmap */
++ /* Noop on a glxpixmap */
+ if (draw->type == DRAWABLE_WINDOW) {
+ xmir_window = xmir_window_get((WindowPtr)draw);
+ pixmap = screen->GetWindowPixmap((WindowPtr)draw);
@@ -3647,7 +3620,7 @@ index 0000000..a98c37b
+ struct xmir_pixmap swap_pix;
+ struct xmir_screen *xmir_screen = xmir_screen_get(screen);
+
-+ /* exchange pixmap data with the front glamor pixmap, and update src name/pitch */
++ /* Exchange pixmap data with the front glamor pixmap, and update src name/pitch */
+ DebugF("%s: Exchanging glamor pixmap from %ux%u to %ux%u\n",
+ GetClientCmdName(client), draw->width, draw->height,
+ pixmap->drawable.width, pixmap->drawable.height);
@@ -3728,7 +3701,7 @@ index 0000000..a98c37b
+ xorg_list_add(entry, &xmir_window->flip.entry);
+ }
+
-+ /* must report damage after adding flip entry, in case flip completes immediately */
++ /* Must report damage after adding flip entry, in case flip completes immediately */
+ if (type != DRI2_FLIP_COMPLETE) {
+ DamageDamageRegion(draw, ®ion);
+ RegionUninit(®ion);
@@ -3765,7 +3738,7 @@ index 0000000..a98c37b
+
+ xmir_screen->dri2.version = 9;
+
-+ /* abuse the megablob ability to load all needed drivers */
++ /* Abuse the megablob ability to load all needed drivers */
+ if (!strcmp(vers->name, "radeon"))
+ driver = "r600";
+ else
@@ -3774,7 +3747,7 @@ index 0000000..a98c37b
+ driverNames[0] = driverNames[1] = xmir_screen->driver_name = strdup(driver);
+ drmFreeVersion(vers);
+
-+ /* as far as I can tell, only legacy AuthMagic has a use for the fd.. oh well */
++ /* As far as I can tell, only legacy AuthMagic has a use for the fd.. oh well */
+ xmir_screen->dri2.fd = xmir_screen->drm_fd;
+ xmir_screen->dri2.driverName = driverNames[0];
+ xmir_screen->dri2.deviceName = xmir_screen->device_name;
@@ -3798,12 +3771,11 @@ index 0000000..a98c37b
+ ret = DRI2ScreenInit(xmir_screen->screen, &xmir_screen->dri2);
+ return ret;
+}
-diff --git a/hw/xmir/xmir-glamor.c b/hw/xmir/xmir-glamor.c
-new file mode 100644
-index 0000000..e86849a
+Index: xorg-server-1.17.2/hw/xmir/xmir-glamor.c
+===================================================================
--- /dev/null
-+++ b/hw/xmir/xmir-glamor.c
-@@ -0,0 +1,1229 @@
++++ xorg-server-1.17.2/hw/xmir/xmir-glamor.c
+@@ -0,0 +1,1187 @@
+/*
+ * Copyright © 2015 Canonical Ltd
+ *
@@ -3833,7 +3805,7 @@ index 0000000..e86849a
+#include "glamor_priv.h"
+#include "xmir.h"
+
-+#include <mir_toolkit/mir_client_library_drm.h>
++#include <mir_toolkit/mir_surface.h>
+
+#include <fcntl.h>
+#include <sys/stat.h>
@@ -3845,8 +3817,9 @@ index 0000000..e86849a
+#include <epoxy/egl.h>
+#include <epoxy/gl.h>
+#include <pthread.h>
-+
-+#define XMIR_DRM_REOPEN_HACK 0
++#include <mir_toolkit/mir_connection.h>
++#include <mir_toolkit/mir_platform_message.h>
++#include <mir_toolkit/mesa/platform_operation.h>
+
+static void
+xmir_glamor_egl_make_current(struct glamor_context *glamor_ctx)
@@ -4315,7 +4288,8 @@ index 0000000..e86849a
+ while (!xorg_list_is_empty(&xmir_screen->swap_list)) {
+ struct xmir_window *xmir_win;
+ Bool ret;
-+ EGLint val;
++ EGLint val, width, height;
++ PixmapPtr src_pixmap;
+
+ xmir_win = xorg_list_first_entry(&xmir_screen->swap_list, struct xmir_window, flip.entry);
+
@@ -4334,20 +4308,13 @@ index 0000000..e86849a
+ glClearColor(0., 1., 0., 1.);
+ glClear(GL_COLOR_BUFFER_BIT);
+
-+ {
-+ ScreenPtr screen = xmir_screen->screen;
-+ WindowPtr window = xmir_win->window;
-+ PixmapPtr src_pixmap = screen->GetWindowPixmap(window);
-+ glamor_pixmap_private *src_pixmap_priv = glamor_get_pixmap_private(src_pixmap);
-+ EGLint width, height;
++ glEGLImageTargetTexture2DOES(GL_TEXTURE_2D,
++ (GLeglImageOES)xmir_win->image);
+
-+ glEGLImageTargetTexture2DOES(GL_TEXTURE_2D,
-+ (GLeglImageOES)xmir_win->image);
-+
-+ eglQuerySurface(xmir_screen->egl_display, xmir_win->egl_surface, EGL_HEIGHT, &height);
-+ eglQuerySurface(xmir_screen->egl_display, xmir_win->egl_surface, EGL_WIDTH, &width);
-+ xmir_glamor_copy_egl_tex(1, &window->drawable, src_pixmap, src_pixmap_priv, RegionExtents(&xmir_win->region), width, height, 0, 0, xmir_win->orientation);
Reply to: