From 37facdad11007fb89d30d7de5328ad900de7760d Mon Sep 17 00:00:00 2001 From: marha Date: Fri, 3 Oct 2014 11:16:22 +0200 Subject: Resynchronised files with released version --- xorg-server/hw/xwin/winclipboard/internal.h | 16 ++----- xorg-server/hw/xwin/winclipboard/thread.c | 71 +++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+), 12 deletions(-) (limited to 'xorg-server/hw/xwin/winclipboard') diff --git a/xorg-server/hw/xwin/winclipboard/internal.h b/xorg-server/hw/xwin/winclipboard/internal.h index d42497cc9..fece50740 100755 --- a/xorg-server/hw/xwin/winclipboard/internal.h +++ b/xorg-server/hw/xwin/winclipboard/internal.h @@ -58,22 +58,14 @@ typedef int pid_t; /* Windows headers */ #include -/* Clipboard module constants */ -#define WIN_CLIPBOARD_WINDOW_CLASS "xwinclip" -#define WIN_CLIPBOARD_WINDOW_TITLE "xwinclip" -#ifdef HAS_DEVWINDOWS -#define WIN_MSG_QUEUE_FNAME "/dev/windows" -#endif -#define WIN_CONNECT_RETRIES 40 -#define WIN_CONNECT_DELAY 4 -#define WIN_JMP_OKAY 0 -#define WIN_JMP_ERROR_IO 2 -#define WIN_LOCAL_PROPERTY "CYGX_CUT_BUFFER" +#include "winmsg.h" + #define WIN_XEVENTS_SUCCESS 0 #define WIN_XEVENTS_CONVERT 2 #define WIN_XEVENTS_NOTIFY 3 +#define WIN_LOCAL_PROPERTY "CYGX_CUT_BUFFER" -#include "winmsg.h" +#define WM_WM_REINIT (WM_USER + 200) /* * References to external symbols diff --git a/xorg-server/hw/xwin/winclipboard/thread.c b/xorg-server/hw/xwin/winclipboard/thread.c index 56f5484e6..1ba687eb1 100755 --- a/xorg-server/hw/xwin/winclipboard/thread.c +++ b/xorg-server/hw/xwin/winclipboard/thread.c @@ -47,6 +47,18 @@ #include "winmsg.h" #include "internal.h" +/* Clipboard module constants */ +#define WIN_CONNECT_RETRIES 40 +#define WIN_CONNECT_DELAY 4 +#define WIN_JMP_OKAY 0 +#define WIN_JMP_ERROR_IO 2 + +#define WIN_CLIPBOARD_WINDOW_CLASS "xwinclip" +#define WIN_CLIPBOARD_WINDOW_TITLE "xwinclip" +#ifdef HAS_DEVWINDOWS +#define WIN_MSG_QUEUE_FNAME "/dev/windows" +#endif + #ifdef _MSC_VER #define snprintf _snprintf #endif @@ -55,6 +67,7 @@ */ extern Bool g_fUnicodeClipboard; +extern Bool g_fClipboard; extern Bool g_fClipboardStarted; extern Bool g_fClipboardLaunched; extern HWND g_hwndClipboard; @@ -422,6 +435,55 @@ commonexit: return NULL; } +/* + * Create the Windows window that we use to receive Windows messages + */ + +HWND +winClipboardCreateMessagingWindow(void) +{ + WNDCLASSEX wc; + HWND hwnd; + + /* Setup our window class */ + wc.cbSize = sizeof(WNDCLASSEX); + wc.style = CS_HREDRAW | CS_VREDRAW; + wc.lpfnWndProc = winClipboardWindowProc; + wc.cbClsExtra = 0; + wc.cbWndExtra = 0; + wc.hInstance = GetModuleHandle(NULL); + wc.hIcon = 0; + wc.hCursor = 0; + wc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); + wc.lpszMenuName = NULL; + wc.lpszClassName = WIN_CLIPBOARD_WINDOW_CLASS; + wc.hIconSm = 0; + RegisterClassEx(&wc); + + /* Create the window */ + hwnd = CreateWindowExA(0, /* Extended styles */ + WIN_CLIPBOARD_WINDOW_CLASS, /* Class name */ + WIN_CLIPBOARD_WINDOW_TITLE, /* Window name */ + WS_OVERLAPPED, /* Not visible anyway */ + CW_USEDEFAULT, /* Horizontal position */ + CW_USEDEFAULT, /* Vertical position */ + CW_USEDEFAULT, /* Right edge */ + CW_USEDEFAULT, /* Bottom edge */ + (HWND) NULL, /* No parent or owner window */ + (HMENU) NULL, /* No menu */ + GetModuleHandle(NULL), /* Instance handle */ + NULL); /* Creation data */ + assert(hwnd != NULL); + + /* I'm not sure, but we may need to call this to start message processing */ + ShowWindow(hwnd, SW_HIDE); + + /* Similarly, we may need a call to this even though we don't paint */ + UpdateWindow(hwnd); + + return hwnd; +} + /* * winClipboardErrorHandler - Our application specific error handler */ @@ -478,3 +540,12 @@ winClipboardThreadExit(void *arg) AbortDDX(EXIT_ERR_ABORT); TerminateProcess(GetCurrentProcess(),1); } + + +void +winFixClipboardChain(int Removed) +{ + if (g_fClipboard && g_hwndClipboard) { + PostMessage (g_hwndClipboard, WM_WM_REINIT, Removed, 0); + } +} -- cgit v1.2.3