This part of work fixes the Xephyr host cursor issue. Ohterwise when we close pointer device in dix, it will cause a signal fault as the callback is NULL.
>From 06f30919ed2e2624c743ef59c6b7f21d0fef424c Mon Sep 17 00:00:00 2001 From: Haitao Feng <haitao.f...@intel.com> Date: Fri, 14 May 2010 13:03:55 +0800 Subject: Fix the Xephyr host-cursor problem Signed-off-by: Haitao Feng <haitao.f...@intel.com> --- hw/kdrive/ephyr/Makefile.am | 26 ++++++++++++++++++++------ hw/kdrive/ephyr/ephyrhostglx.c | 5 ++++- hw/kdrive/ephyr/ephyrinit.c | 8 +++++++- 3 files changed, 31 insertions(+), 8 deletions(-) diff --git a/hw/kdrive/ephyr/Makefile.am b/hw/kdrive/ephyr/Makefile.am index 3e3f1c7..4c28086 100644 --- a/hw/kdrive/ephyr/Makefile.am +++ b/hw/kdrive/ephyr/Makefile.am @@ -28,6 +28,25 @@ HOSTVIDEO_SRCS = \ ephyrhostvideo.c \ ephyrhostvideo.h +if DRI2 +HOSTDRI_SRCS = \ + ephyrdri2ext.c \ + ephyrdri2ext.h \ + ephyrdri2.c \ + ephyrdri2.h \ + dri2.c \ + dri2.h \ + ephyrdriext.c \ + ephyrdriext.h \ + ephyrdri.c \ + ephyrdri.h \ + XF86dri.c \ + xf86dri.h \ + ephyrglxext.c \ + ephyrglxext.h \ + ephyrhostglx.c \ + ephyrhostglx.h +else HOSTDRI_SRCS = \ ephyrdriext.c \ ephyrdriext.h \ @@ -35,16 +54,11 @@ HOSTDRI_SRCS = \ ephyrdri.h \ XF86dri.c \ xf86dri.h \ - ephyrdri2ext.c \ - ephyrdri2ext.h \ - ephyrdri2.c \ - ephyrdri2.h \ - dri2.c \ - dri2.h \ ephyrglxext.c \ ephyrglxext.h \ ephyrhostglx.c \ ephyrhostglx.h +endif XEPHYR_SRCS = \ ephyr.c \ diff --git a/hw/kdrive/ephyr/ephyrhostglx.c b/hw/kdrive/ephyr/ephyrhostglx.c index 6733782..6736b96 100644 --- a/hw/kdrive/ephyr/ephyrhostglx.c +++ b/hw/kdrive/ephyr/ephyrhostglx.c @@ -165,11 +165,12 @@ ephyrHostGLXGetStringFromServer (int a_screen_number, xGLXGenericGetStringReq *req=NULL; xGLXSingleReply reply; int length=0, numbytes=0, major_opcode=0, get_string_op=0; +#if DRI2 const char *glx_texture_from_pixmap = "GLX_EXT_texture_from_pixmap "; char *start = NULL; char *end = NULL; int pos = 0, len = 0; - +#endif EPHYR_RETURN_VAL_IF_FAIL (dpy && a_string, FALSE) ; EPHYR_LOG ("enter\n") ; @@ -234,6 +235,7 @@ ephyrHostGLXGetStringFromServer (int a_screen_number, UnlockDisplay (dpy); SyncHandle (); +#if DRI2 start = strstr(*a_string, glx_texture_from_pixmap); if (start){ EPHYR_LOG ("strname:%#x, strvalue:'%s', strlen:%d\n", @@ -245,6 +247,7 @@ ephyrHostGLXGetStringFromServer (int a_screen_number, EPHYR_LOG ("strname:%#x, strvalue:'%s', strlen:%d\n", a_string_name, *a_string, numbytes) ; } +#endif is_ok = TRUE ; out: diff --git a/hw/kdrive/ephyr/ephyrinit.c b/hw/kdrive/ephyr/ephyrinit.c index 27cab3b..0021098 100644 --- a/hw/kdrive/ephyr/ephyrinit.c +++ b/hw/kdrive/ephyr/ephyrinit.c @@ -358,13 +358,19 @@ ephyrDeviceCursorInitialize(DeviceIntPtr pDev, ScreenPtr pScreen) return TRUE; } +static void +ephyrDeviceCursorCleanup(DeviceIntPtr pDev, ScreenPtr pScreen) +{ + return TRUE; +} + miPointerSpriteFuncRec EphyrPointerSpriteFuncs = { ephyrRealizeCursor, ephyrUnrealizeCursor, ephyrSetCursor, ephyrMoveCursor, ephyrDeviceCursorInitialize, - NULL + ephyrDeviceCursorCleanup }; -- 1.6.3.3 _______________________________________________ MeeGo-dev mailing list MeeGo-dev@meego.com http://lists.meego.com/listinfo/meego-dev