- use global atoms for the format ids
- add timeout when calling XCheckTypedWindowEvent
- fix broken IsClipboardFormatAvailable; it tried to do a trick with
  EnumClipboardFormats by making incorrect assumptions
- in X11DRV_IsClipboardFormatAvailable do a quick exit if no one owns
  the selection
- add 1 second *minimum* time lapse between XSelectionOwner calls
- sync clipboard ownership between different wine processes
- prevents apps from getting into wierd state where they thought they
  didn't own the selection but they did and as a result queried
  themselves for available selection data

diff --git a/server/protocol.def b/server/protocol.def
index fb820a8..bb3e37a 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -2124,3 +2124,28 @@
     int            next_unicode;   /* is the next a unicode hook? */
     VARARG(module,unicode_str);    /* module name */
 @END
+
+
+/* Set/get clipboard information */
+@REQ(set_clipboard_info)
+    unsigned int   flags;       /* flags for fields to set (see below) */
+    user_handle_t  clipboard;   /* clipboard window */
+    user_handle_t  owner;       /* clipboard owner */
+    user_handle_t  viewer;      /* first clipboard viewer */
+    unsigned int   seqno;       /* change sequence number */
+@REPLY
+    unsigned int   flags;           /* status flags (see below) */
+    user_handle_t  old_clipboard;   /* old clipboard window */
+    user_handle_t  old_owner;       /* old clipboard owner */
+    user_handle_t  old_viewer;      /* old clipboard viewer */
+    unsigned int   seqno;           /* current sequence number */
+@END
+
+#define SET_CB_OPEN      0x001
+#define SET_CB_OWNER     0x002
+#define SET_CB_VIEWER    0x004
+#define SET_CB_SEQNO     0x008
+#define SET_CB_RELOWNER  0x010
+#define SET_CB_CLOSE     0x020
+#define CB_OPEN          0x040
+#define CB_OWNER         0x080