Alexandre Julliard : winex11: Add a helper function to register builtin clipboard formats.
Alexandre Julliard
julliard at winehq.org
Mon Sep 26 09:29:59 CDT 2016
Module: wine
Branch: master
Commit: e9461b4567935c75ab1d6d48358de9dd06df85f0
URL: http://source.winehq.org/git/wine.git/?a=commit;h=e9461b4567935c75ab1d6d48358de9dd06df85f0
Author: Alexandre Julliard <julliard at winehq.org>
Date: Mon Sep 26 20:16:06 2016 +0900
winex11: Add a helper function to register builtin clipboard formats.
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/winex11.drv/clipboard.c | 47 ++++++++++++++++++++++++++++----------------
1 file changed, 30 insertions(+), 17 deletions(-)
diff --git a/dlls/winex11.drv/clipboard.c b/dlls/winex11.drv/clipboard.c
index cc4f92f..602a69a 100644
--- a/dlls/winex11.drv/clipboard.c
+++ b/dlls/winex11.drv/clipboard.c
@@ -342,6 +342,31 @@ static struct clipboard_format *find_x11_format( Atom atom )
/**************************************************************************
+ * register_builtin_formats
+ */
+static void register_builtin_formats(void)
+{
+ struct clipboard_format *formats;
+ unsigned int i;
+
+ if (!(formats = HeapAlloc( GetProcessHeap(), 0, NB_BUILTIN_FORMATS * sizeof(*formats)))) return;
+
+ for (i = 0; i < NB_BUILTIN_FORMATS; i++)
+ {
+ if (builtin_formats[i].name)
+ formats[i].id = RegisterClipboardFormatW( builtin_formats[i].name );
+ else
+ formats[i].id = builtin_formats[i].id;
+
+ formats[i].atom = GET_ATOM(builtin_formats[i].data);
+ formats[i].import = builtin_formats[i].import;
+ formats[i].export = builtin_formats[i].export;
+ list_add_tail( &format_list, &formats[i].entry );
+ }
+}
+
+
+/**************************************************************************
* register_formats
*/
static void register_formats( const UINT *ids, const Atom *atoms, unsigned int count )
@@ -376,6 +401,8 @@ static void register_win32_formats( const UINT *ids, UINT size )
Atom atoms[256];
WCHAR buffer[256];
+ if (list_empty( &format_list)) register_builtin_formats();
+
while (size)
{
for (count = 0; count < 256 && size; ids++, size--)
@@ -410,6 +437,8 @@ static void register_x11_formats( const Atom *atoms, UINT size )
Atom new_atoms[256];
WCHAR buffer[256];
+ if (list_empty( &format_list)) register_builtin_formats();
+
while (size)
{
for (count = 0; count < 256 && size; atoms++, size--)
@@ -442,23 +471,7 @@ static void register_x11_formats( const Atom *atoms, UINT size )
*/
void X11DRV_InitClipboard(void)
{
- struct clipboard_format *formats;
- UINT i;
-
- if (!(formats = HeapAlloc( GetProcessHeap(), 0, NB_BUILTIN_FORMATS * sizeof(*formats)))) return;
-
- for (i = 0; i < NB_BUILTIN_FORMATS; i++)
- {
- if (builtin_formats[i].name)
- formats[i].id = RegisterClipboardFormatW( builtin_formats[i].name );
- else
- formats[i].id = builtin_formats[i].id;
-
- formats[i].atom = GET_ATOM(builtin_formats[i].data);
- formats[i].import = builtin_formats[i].import;
- formats[i].export = builtin_formats[i].export;
- list_add_tail( &format_list, &formats[i].entry );
- }
+ register_builtin_formats();
}
More information about the wine-cvs
mailing list