Kusanagi Kouichi : winex11.drv: Check XDND version.

Alexandre Julliard julliard at winehq.org
Mon Feb 22 08:46:48 CST 2010


Module: wine
Branch: master
Commit: 10789142fcf639b8b6b290f317e5a12810ad1d4c
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=10789142fcf639b8b6b290f317e5a12810ad1d4c

Author: Kusanagi Kouichi <slash at ac.auone-net.jp>
Date:   Sat Feb 20 17:57:07 2010 +0900

winex11.drv: Check XDND version.

---

 dlls/winex11.drv/window.c |    2 +-
 dlls/winex11.drv/x11drv.h |    2 ++
 dlls/winex11.drv/xdnd.c   |   12 ++++++++++--
 3 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c
index e46a06b..1f40eba 100644
--- a/dlls/winex11.drv/window.c
+++ b/dlls/winex11.drv/window.c
@@ -917,7 +917,7 @@ static void set_initial_wm_hints( Display *display, struct x11drv_win_data *data
 {
     long i;
     Atom protocols[3];
-    Atom dndVersion = 4;
+    Atom dndVersion = WINE_XDND_VERSION;
     XClassHint *class_hints;
     char *process_name = get_process_name();
 
diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h
index 6db410a..001836f 100644
--- a/dlls/winex11.drv/x11drv.h
+++ b/dlls/winex11.drv/x11drv.h
@@ -64,6 +64,8 @@ typedef int Status;
 #define MAX_PIXELFORMATS 8
 #define MAX_DASHLEN 16
 
+#define WINE_XDND_VERSION 4
+
 struct tagCURSORICONINFO;
 
 extern void CDECL wine_tsx11_lock(void);
diff --git a/dlls/winex11.drv/xdnd.c b/dlls/winex11.drv/xdnd.c
index 38687ec..fe36e0c 100644
--- a/dlls/winex11.drv/xdnd.c
+++ b/dlls/winex11.drv/xdnd.c
@@ -87,14 +87,22 @@ static CRITICAL_SECTION xdnd_cs = { &critsect_debug, -1, 0, 0, 0, 0 };
  */
 void X11DRV_XDND_EnterEvent( HWND hWnd, XClientMessageEvent *event )
 {
+    int version;
     Atom *xdndtypes;
     unsigned long count = 0;
 
-    TRACE("ver(%ld) check-XdndTypeList(%ld) data=%ld,%ld,%ld,%ld,%ld\n",
-          (event->data.l[1] & 0xFF000000) >> 24, (event->data.l[1] & 1),
+    version = (event->data.l[1] & 0xFF000000) >> 24;
+    TRACE("ver(%d) check-XdndTypeList(%ld) data=%ld,%ld,%ld,%ld,%ld\n",
+          version, (event->data.l[1] & 1),
           event->data.l[0], event->data.l[1], event->data.l[2],
           event->data.l[3], event->data.l[4]);
 
+    if (version > WINE_XDND_VERSION)
+    {
+        TRACE("Ignores unsupported version\n");
+        return;
+    }
+
     /* If the source supports more than 3 data types we retrieve
      * the entire list. */
     if (event->data.l[1] & 1)




More information about the wine-cvs mailing list