[Xorg-commit] xc/programs/Xserver/hw/xwin winclipboard.h,1.1.4.1.2.4,1.1.4.1.2.5 winclipboardthread.c,1.1.4.1.2.5,1.1.4.1.2.6 winclipboardwndproc.c,1.1.4.1.2.6,1.1.4.1.2.7 winclipboardwrappers.c,1.1.2.4,1.1.2.5

Harold L Hunt II xorg-commit at pdx.freedesktop.org
Mon Jan 12 03:10:53 EET 2004


Committed by: harold

Update of /cvs/xorg/xc/programs/Xserver/hw/xwin
In directory pdx:/tmp/cvs-serv21437

Modified Files:
      Tag: CYGWIN
	winclipboard.h winclipboardthread.c winclipboardwndproc.c 
	winclipboardwrappers.c 
Log Message:
XWin Server - Sync with 4.3.0-38 release.  Minor fixes to clipboard code.

Index: winclipboard.h
===================================================================
RCS file: /cvs/xorg/xc/programs/Xserver/hw/xwin/winclipboard.h,v
retrieving revision 1.1.4.1.2.4
retrieving revision 1.1.4.1.2.5
diff -u -d -r1.1.4.1.2.4 -r1.1.4.1.2.5
--- winclipboard.h	10 Jan 2004 07:50:57 -0000	1.1.4.1.2.4
+++ winclipboard.h	12 Jan 2004 01:10:50 -0000	1.1.4.1.2.5
@@ -1,3 +1,5 @@
+#ifndef _WINCLIPBOARD_H_
+#define _WINCLIPBOARD_H_
 /*
  *Copyright (C) 1994-2000 The XFree86 Project, Inc. All Rights Reserved.
  *
@@ -29,10 +31,6 @@
  */
 /* $XFree86: xc/programs/Xserver/hw/xwin/winclipboard.h,v 1.3 2003/10/02 13:30:10 eich Exp $ */
 
-
-#ifndef _WINCLIPBOARD_H_
-#define _WINCLIPBOARD_H_
-
 /* Standard library headers */
 #include <assert.h>
 #include <stdio.h>

Index: winclipboardthread.c
===================================================================
RCS file: /cvs/xorg/xc/programs/Xserver/hw/xwin/winclipboardthread.c,v
retrieving revision 1.1.4.1.2.5
retrieving revision 1.1.4.1.2.6
diff -u -d -r1.1.4.1.2.5 -r1.1.4.1.2.6
--- winclipboardthread.c	11 Jan 2004 07:39:03 -0000	1.1.4.1.2.5
+++ winclipboardthread.c	12 Jan 2004 01:10:50 -0000	1.1.4.1.2.6
@@ -256,6 +256,10 @@
       pthread_exit (NULL);
     }
 
+#if 0
+  ErrorF ("winClipboardProc - iWindow: %d\n", iWindow);
+#endif
+
   /* Save the window in the screen privates */
   g_iClipboardWindow = iWindow;
 

Index: winclipboardwndproc.c
===================================================================
RCS file: /cvs/xorg/xc/programs/Xserver/hw/xwin/winclipboardwndproc.c,v
retrieving revision 1.1.4.1.2.6
retrieving revision 1.1.4.1.2.7
diff -u -d -r1.1.4.1.2.6 -r1.1.4.1.2.7
--- winclipboardwndproc.c	11 Jan 2004 02:49:14 -0000	1.1.4.1.2.6
+++ winclipboardwndproc.c	12 Jan 2004 01:10:50 -0000	1.1.4.1.2.7
@@ -164,8 +164,54 @@
 	    && !IsClipboardFormatAvailable (CF_UNICODETEXT))
 	  {
 	    ErrorF ("winClipboardWindowProc - WM_DRAWCLIPBOARD - "
-		    "Clipboard does not contain CF_TEXT nor CF_UNICODETEXT; "
-		    "not taking ownership of X11 selections.\n");
+		    "Clipboard does not contain CF_TEXT nor "
+		    "CF_UNICODETEXT.\n");
+
+	    /*
+	     * We need to make sure that the X Server has processed
+	     * previous XSetSelectionOwner messages.
+	     */
+	    XSync (pDisplay, FALSE);
+	    
+	    /* Release PRIMARY selection if owned */
+	    iReturn = XGetSelectionOwner (pDisplay, XA_PRIMARY);
+	    if (iReturn == g_iClipboardWindow)
+	      {
+#if 0
+		ErrorF ("winClipboardWindowProc - WM_DRAWCLIPBOARD - "
+			"PRIMARY selection is owned by us.\n");
+#endif
+		XSetSelectionOwner (pDisplay,
+				    XA_PRIMARY,
+				    None,
+				    CurrentTime);
+	      }
+	    else if (BadWindow == iReturn || BadAtom == iReturn)
+	      ErrorF ("winClipboardWindowProc - WM_DRAWCLIPBOARD - "
+		      "XGetSelection failed for PRIMARY: %d\n", iReturn);
+
+	    /* Release CLIPBOARD selection if owned */
+	    iReturn = XGetSelectionOwner (pDisplay,
+					  XInternAtom (pDisplay,
+						       "CLIPBOARD",
+						       FALSE));
+	    if (iReturn == g_iClipboardWindow)
+	      {
+#if 0
+		ErrorF ("winClipboardWindowProc - WM_DRAWCLIPBOARD - "
+			"CLIPBOARD selection is owned by us.\n");
+#endif
+		XSetSelectionOwner (pDisplay,
+				    XInternAtom (pDisplay,
+						 "CLIPBOARD",
+						 FALSE),
+				    None,
+				    CurrentTime);
+	      }
+	    else if (BadWindow == iReturn || BadAtom == iReturn)
+	      ErrorF ("winClipboardWindowProc - WM_DRAWCLIPBOARD - "
+		      "XGetSelection failed for CLIPBOARD: %d\n", iReturn);
+
 	    return 0;
 	  }
 

Index: winclipboardwrappers.c
===================================================================
RCS file: /cvs/xorg/xc/programs/Xserver/hw/xwin/Attic/winclipboardwrappers.c,v
retrieving revision 1.1.2.4
retrieving revision 1.1.2.5
diff -u -d -r1.1.2.4 -r1.1.2.5
--- winclipboardwrappers.c	11 Jan 2004 02:49:14 -0000	1.1.2.4
+++ winclipboardwrappers.c	12 Jan 2004 01:10:50 -0000	1.1.2.5
@@ -32,7 +32,6 @@
 #include "dixstruct.h"
 #include "Xatom.h"
 
-
 /*
  * Constants
  */
@@ -46,7 +45,7 @@
  * Globals
  */
 
-static Window		g_iOwners[CLIP_NUM_SELECTIONS];
+static Window		g_iOwners[CLIP_NUM_SELECTIONS] = {None};
 
 
 /*
@@ -332,7 +331,7 @@
 	  
 	  /* Adjust last owned selection */
 	  if (None != g_iOwners[CLIP_OWN_CLIPBOARD])
-	    g_atomLastOwnedSelection = MakeAtom ("CLIPBOARD", 10, FALSE);
+	    g_atomLastOwnedSelection = MakeAtom ("CLIPBOARD", 9, FALSE);
 	  else
 	    g_atomLastOwnedSelection = None;
 	}
@@ -340,7 +339,7 @@
       /* Save new selection owner or None */
       g_iOwners[CLIP_OWN_PRIMARY] = stuff->window;
     }
-  else if (MakeAtom ("CLIPBOARD", 10, FALSE) == stuff->selection)
+  else if (MakeAtom ("CLIPBOARD", 9, FALSE) == stuff->selection)
     {
       /* Look for owned -> not owned transition */
       if (None == stuff->window
@@ -355,6 +354,7 @@
 	    g_atomLastOwnedSelection = None;
 	}
       
+      /* Save new selection owner or None */
       g_iOwners[CLIP_OWN_CLIPBOARD] = stuff->window;
     }
   else
@@ -391,7 +391,9 @@
   /* Abort if no window at this point */
   if (None == stuff->window)
     {
+#if 0
       ErrorF ("winProcSetSelectionOwner - No window, returning.\n");
+#endif
       goto winProcSetSelectionOwner_Done;
     }
 





More information about the xorg-commit mailing list