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