struct DBusBabysitter
{
DBusAtomic refcount;
-
- HANDLE start_sync_event;
-
char *log_name;
HANDLE thread_handle;
_dbus_babysitter_trace_ref (sitter, old_refcount, old_refcount+1, __FUNCTION__);
- sitter->start_sync_event = CreateEvent (NULL, FALSE, FALSE, NULL);
- if (sitter->start_sync_event == NULL)
- {
- _dbus_babysitter_unref (sitter);
- return NULL;
- }
-
sitter->child_handle = NULL;
sitter->socket_to_babysitter = sitter->socket_to_main = _dbus_socket_get_invalid ();
if (sitter->watches)
_dbus_watch_list_free (sitter->watches);
- if (sitter->start_sync_event != NULL)
- {
- PING();
- CloseHandle (sitter->start_sync_event);
- sitter->start_sync_event = NULL;
- }
-
if (sitter->thread_handle)
{
CloseHandle (sitter->thread_handle);
DBusBabysitter *sitter = (DBusBabysitter *) parameter;
PING();
- SetEvent (sitter->start_sync_event);
-
if (sitter->child_handle != NULL)
{
DWORD status;
goto out0;
}
- PING();
- WaitForSingleObject (sitter->start_sync_event, INFINITE);
-
PING();
if (sitter_p != NULL)
*sitter_p = sitter;