diff options
author | Michael Smith <msmith@xiph.org> | 2008-08-13 21:58:08 +0000 |
---|---|---|
committer | Michael Smith <msmith@xiph.org> | 2008-08-13 21:58:08 +0000 |
commit | cbc51271903c1e88b142b7d8de4e3fb558009fcc (patch) | |
tree | c03bd80cc8e5ed09e47ada4ae7d88a3373be5679 /sys/dshowvideosink | |
parent | 85b99b9077b0c3f57cd6dac0c00123ac9d487791 (diff) | |
download | gst-plugins-bad-cbc51271903c1e88b142b7d8de4e3fb558009fcc.tar.gz gst-plugins-bad-cbc51271903c1e88b142b7d8de4e3fb558009fcc.tar.bz2 gst-plugins-bad-cbc51271903c1e88b142b7d8de4e3fb558009fcc.zip |
sys/: Initialise COM with default flags.
Original commit message from CVS:
* sys/dshowdecwrapper/gstdshowaudiodec.c:
* sys/dshowdecwrapper/gstdshowaudiodec.h:
* sys/dshowdecwrapper/gstdshowvideodec.c:
* sys/dshowdecwrapper/gstdshowvideodec.h:
* sys/dshowvideosink/dshowvideosink.cpp:
* sys/dshowvideosink/dshowvideosink.h:
Initialise COM with default flags.
Only deinitialise if the initialisation was successful.
Diffstat (limited to 'sys/dshowvideosink')
-rw-r--r-- | sys/dshowvideosink/dshowvideosink.cpp | 11 | ||||
-rw-r--r-- | sys/dshowvideosink/dshowvideosink.h | 2 |
2 files changed, 11 insertions, 2 deletions
diff --git a/sys/dshowvideosink/dshowvideosink.cpp b/sys/dshowvideosink/dshowvideosink.cpp index b191c98b..788dbdd5 100644 --- a/sys/dshowvideosink/dshowvideosink.cpp +++ b/sys/dshowvideosink/dshowvideosink.cpp @@ -211,9 +211,13 @@ gst_dshowvideosink_clear (GstDshowVideoSink *sink) static void
gst_dshowvideosink_init (GstDshowVideoSink * sink, GstDshowVideoSinkClass * klass)
{
+ HRESULT hr;
+
gst_dshowvideosink_clear (sink);
- CoInitializeEx (NULL, COINIT_MULTITHREADED);
+ hr = CoInitialize (0);
+ if (SUCCEEDED(hr))
+ sink->comInitialized = TRUE;
/* TODO: Copied from GstVideoSink; should we use that as base class? */
/* 20ms is more than enough, 80-130ms is noticable */
@@ -229,7 +233,10 @@ gst_dshowvideosink_finalize (GObject * gobject) if (sink->preferredrenderer)
g_free (sink->preferredrenderer);
- CoUninitialize ();
+ if (sink->comInitialized) {
+ CoUninitialize ();
+ sink->comInitialized = FALSE;
+ }
G_OBJECT_CLASS (parent_class)->finalize (gobject);
}
diff --git a/sys/dshowvideosink/dshowvideosink.h b/sys/dshowvideosink/dshowvideosink.h index 69ac28e2..fd03c2b7 100644 --- a/sys/dshowvideosink/dshowvideosink.h +++ b/sys/dshowvideosink/dshowvideosink.h @@ -91,6 +91,8 @@ struct _GstDshowVideoSink /* If we use an app-supplied window, we need to hook its WNDPROC */ WNDPROC prevWndProc; + + gboolean comInitialized; }; struct _GstDshowVideoSinkClass |