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