sys/: Wait until the window is created before using it; guard unistd.h includes with...
authorSergey Scobich <sergey.scobich@gmail.com>
Wed, 1 Nov 2006 10:19:18 +0000 (10:19 +0000)
committerTim-Philipp Müller <tim@centricular.net>
Wed, 1 Nov 2006 10:19:18 +0000 (10:19 +0000)
Original commit message from CVS:
Patch by: Sergey Scobich  <sergey dot scobich at gmail com>
* sys/directdraw/gstdirectdrawsink.c:
(gst_directdrawsink_window_thread),
(gst_directdrawsink_create_default_window):
* sys/directdraw/gstdirectdrawsink.h:
* sys/directsound/gstdirectsoundsink.c:
Wait until the window is created before using it; guard unistd.h
includes with HAVE_UNISTD_H. (#366523)
* win32/vs8/libgstdirectdraw.vcproj:
* win32/vs8/libgstdirectsound.vcproj:
Update project files.

ChangeLog
sys/directdraw/gstdirectdrawsink.c
sys/directdraw/gstdirectdrawsink.h
sys/directsound/gstdirectsoundsink.c
win32/vs8/libgstdirectdraw.vcproj
win32/vs8/libgstdirectsound.vcproj

index 7ce1572..60682bb 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2006-11-01  Tim-Philipp Müller  <tim at centricular dot net>
+
+       Patch by: Sergey Scobich  <sergey dot scobich at gmail com>
+
+       * sys/directdraw/gstdirectdrawsink.c:
+       (gst_directdrawsink_window_thread),
+       (gst_directdrawsink_create_default_window):
+       * sys/directdraw/gstdirectdrawsink.h:
+       * sys/directsound/gstdirectsoundsink.c:
+         Wait until the window is created before using it; guard unistd.h
+         includes with HAVE_UNISTD_H. (#366523)
+
+       * win32/vs8/libgstdirectdraw.vcproj:
+       * win32/vs8/libgstdirectsound.vcproj:
+         Update project files.
+
 2006-10-31  Wim Taymans  <wim@fluendo.com>
 
        * gst/qtdemux/qtdemux.c: (gst_qtdemux_get_duration),
index fbccb80..ec449c7 100644 (file)
@@ -28,7 +28,9 @@
 
 #include <fcntl.h>
 #include <errno.h>
+#ifdef HAVE_UNISTD_H
 #include <unistd.h>
+#endif
 #include <string.h>
 
 GST_DEBUG_CATEGORY_STATIC (directdrawsink_debug);
@@ -1366,6 +1368,8 @@ gst_directdrawsink_window_thread (GstDirectDrawSink * ddrawsink)
   if (ddrawsink->video_window == NULL)
     return FALSE;
 
+  ReleaseSemaphore (ddrawsink->window_created_signal, 1, NULL);
+
   /*start message loop processing our default window messages */
   while (1) {
     MSG msg;
@@ -1381,15 +1385,27 @@ gst_directdrawsink_window_thread (GstDirectDrawSink * ddrawsink)
 static gboolean
 gst_directdrawsink_create_default_window (GstDirectDrawSink * ddrawsink)
 {
+  ddrawsink->window_created_signal = CreateSemaphore (NULL, 0, 1, NULL);
+  if (ddrawsink->window_created_signal == NULL)
+    return FALSE;
+
   ddrawsink->window_thread = g_thread_create (
       (GThreadFunc) gst_directdrawsink_window_thread, ddrawsink, TRUE, NULL);
 
   if (ddrawsink->window_thread == NULL)
-    return FALSE;
+    goto failed;
 
-  /*TODO:wait for the window to be created with timeout */
+  /* wait maximum 10 seconds for windows creating */
+  if (WaitForSingleObject (ddrawsink->window_created_signal,
+          10000) != WAIT_OBJECT_0)
+    goto failed;
 
+  CloseHandle (ddrawsink->window_created_signal);
   return TRUE;
+
+failed:
+  CloseHandle (ddrawsink->window_created_signal);
+  return FALSE;
 }
 
 static gboolean
index f11c95e..f9d4c86 100644 (file)
@@ -104,6 +104,7 @@ struct _GstDirectDrawSink
 
   /*handle of the video window */
   HWND video_window;
+  HANDLE window_created_signal;
   gboolean resize_window;
 
   /*video properties */
index 35149f1..8676238 100644 (file)
@@ -27,7 +27,9 @@
 
 #include <fcntl.h>
 #include <errno.h>
+#ifdef HAVE_UNISTD_H
 #include <unistd.h>
+#endif
 #include <string.h>
 
 GST_DEBUG_CATEGORY_STATIC (directsoundsink_debug);
index 06f5ee1..31af1ca 100644 (file)
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="windows-1251"?>
+<?xml version="1.0" encoding="Windows-1252"?>
 <VisualStudioProject
        ProjectType="Visual C++"
-       Version="8,00"
+       Version="8.00"
        Name="libgstdirectdraw"
        ProjectGUID="{1594A623-5529-4B86-BD4A-694CF0BDB5C4}"
        Keyword="Win32Proj"
@@ -61,7 +61,7 @@
                        />
                        <Tool
                                Name="VCLinkerTool"
-                               AdditionalDependencies="ddraw.lib libgstvideo-0.10.lib libgstreamer-0.10.lib libgstbase-0.10.lib glib-2.0.lib gobject-2.0.lib"
+                               AdditionalDependencies="ddraw.lib libgstvideo-0.10.lib libgstreamer-0.10.lib libgstbase-0.10.lib glib-2.0.lib gobject-2.0.lib user32.lib gdi32.lib"
                                OutputFile="$(OutDir)/libgstdirectdraw.dll"
                                LinkIncremental="2"
                                AdditionalLibraryDirectories="../../../gstreamer/win32/vs8/$(ConfigurationName);../../../gst-plugins-base/win32/vs8/$(ConfigurationName)"
                        />
                        <Tool
                                Name="VCLinkerTool"
-                               AdditionalDependencies="ddraw.lib libgstvideo-0.10.lib libgstreamer-0.10.lib libgstbase-0.10.lib glib-2.0.lib gobject-2.0.lib"
+                               AdditionalDependencies="ddraw.lib libgstvideo-0.10.lib libgstreamer-0.10.lib libgstbase-0.10.lib glib-2.0.lib gobject-2.0.lib user32.lib gdi32.lib"
                                OutputFile="$(OutDir)/libgstdirectdraw.dll"
                                LinkIncremental="1"
                                AdditionalLibraryDirectories="../../../gstreamer/win32/vs8/$(ConfigurationName);../../../gst-plugins-base/win32/vs8/$(ConfigurationName)"
index 2503384..bb6b6c5 100644 (file)
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="windows-1251"?>
+<?xml version="1.0" encoding="Windows-1252"?>
 <VisualStudioProject
        ProjectType="Visual C++"
-       Version="8,00"
+       Version="8.00"
        Name="libgstdirectsound"
        ProjectGUID="{566A2EB9-984C-4027-86DD-EDC7B390C679}"
        Keyword="Win32Proj"
@@ -61,7 +61,7 @@
                        />
                        <Tool
                                Name="VCLinkerTool"
-                               AdditionalDependencies="dsound.lib dxerr9.lib libgstaudio-0.10.lib libgstreamer-0.10.lib libgstbase-0.10.lib glib-2.0.lib gobject-2.0.lib"
+                               AdditionalDependencies="dsound.lib dxerr9.lib libgstaudio-0.10.lib libgstreamer-0.10.lib libgstbase-0.10.lib glib-2.0.lib gobject-2.0.lib user32.lib"
                                OutputFile="$(OutDir)/libgstdirectsound.dll"
                                LinkIncremental="2"
                                AdditionalLibraryDirectories="../../../gstreamer/win32/vs8/$(ConfigurationName);../../../gst-plugins-base/win32/vs8/$(ConfigurationName)"
                        />
                        <Tool
                                Name="VCLinkerTool"
-                               AdditionalDependencies="dsound.lib dxerr9.lib libgstaudio-0.10.lib libgstreamer-0.10.lib libgstbase-0.10.lib glib-2.0.lib gobject-2.0.lib"
+                               AdditionalDependencies="dsound.lib dxerr9.lib libgstaudio-0.10.lib libgstreamer-0.10.lib libgstbase-0.10.lib glib-2.0.lib gobject-2.0.lib user32.lib"
                                OutputFile="$(OutDir)/libgstdirectsound.dll"
                                LinkIncremental="1"
                                AdditionalLibraryDirectories="../../../gstreamer/win32/vs8/$(ConfigurationName);../../../gst-plugins-base/win32/vs8/$(ConfigurationName)"