Win32: move CoInitialize to dnd init

Functions requiring CoInitialize are called just in two places:
 - the filechooser thread which calls its own CoInitializeEx
 - the dnd code

Moving CoInitialize in the dnd specific init is cleaner and
we can pair it with the corresponding CoUninitialize since
CoUninitialize should be called as many times as CoInitialize.
Note that it is ok to call this function multiple times, so it
will not break if another codepath will need it in the future.

The patch also replaces the deprecated CoInitialize with the
equivalent call to CoInitializeEx (already used in the filechooser).
This commit is contained in:
Paolo Borelli 2015-12-14 19:40:25 +01:00
parent f6b0067718
commit 2e5616b27e
2 changed files with 4 additions and 2 deletions

View File

@ -1571,6 +1571,8 @@ add_format (GArray *fmts,
void
_gdk_dnd_init (void)
{
CoInitializeEx (NULL, COINIT_APARTMENTTHREADED);
if (getenv ("GDK_WIN32_USE_EXPERIMENTAL_OLE2_DND"))
use_ole2_dnd = TRUE;
@ -1617,6 +1619,8 @@ _gdk_win32_dnd_exit (void)
{
OleUninitialize ();
}
CoUninitialize ();
}
/* Source side */

View File

@ -97,8 +97,6 @@ _gdk_win32_windowing_init (void)
GDK_NOTE (EVENTS, g_print ("input_locale:%p, codepage:%d\n",
_gdk_input_locale, _gdk_input_codepage));
CoInitialize (NULL);
_gdk_selection = gdk_atom_intern_static_string ("GDK_SELECTION");
_wm_transient_for = gdk_atom_intern_static_string ("WM_TRANSIENT_FOR");
_targets = gdk_atom_intern_static_string ("TARGETS");