summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog9
-rw-r--r--sys/directdraw/gstdirectdrawsink.c6
2 files changed, 15 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 84e5b660..b9e54a09 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
2008-05-07 Ole André Vadla Ravnås <ole.andre.ravnas at tandberg com>
+ patch by: Haakon Sporsheim <haakon.sporsheim at tandberg com>
+
+ * sys/directdraw/gstdirectdrawsink.c (gst_directdraw_sink_set_caps):
+ Fixed mid stream resolution change bug, the offscreen surface is now
+ released when set_caps is called.
+ Partially fixes #520885.
+
+2008-05-07 Ole André Vadla Ravnås <ole.andre.ravnas at tandberg com>
+
* sys/directdraw/gstdirectdrawsink.c
(gst_directdraw_sink_buffer_alloc):
Make it so that gst_directdraw_sink_buffer_alloc uses the right
diff --git a/sys/directdraw/gstdirectdrawsink.c b/sys/directdraw/gstdirectdrawsink.c
index 9d34cf22..d049c575 100644
--- a/sys/directdraw/gstdirectdrawsink.c
+++ b/sys/directdraw/gstdirectdrawsink.c
@@ -510,6 +510,12 @@ gst_directdraw_sink_set_caps (GstBaseSink * bsink, GstCaps * caps)
(GetSystemMetrics (SM_CYSIZEFRAME) * 2), SWP_SHOWWINDOW | SWP_NOMOVE);
}
+ /* release the surface, we have to recreate it! */
+ if (ddrawsink->offscreen_surface) {
+ IDirectDrawSurface7_Release (ddrawsink->offscreen_surface);
+ ddrawsink->offscreen_surface = NULL;
+ }
+
/* create an offscreen surface with the caps */
ret = gst_directdraw_sink_check_offscreen_surface (ddrawsink);
if (!ret) {