diff --git a/.clutter-gst2.metadata b/.clutter-gst2.metadata
index 2f44675..4f8efda 100644
--- a/.clutter-gst2.metadata
+++ b/.clutter-gst2.metadata
@@ -1 +1 @@
-623923ac8bfee20f0ce60b2d3671673ad342afaa SOURCES/clutter-gst-2.0.4.tar.xz
+da6249c6ce686ba74e459402774831f19672379f SOURCES/clutter-gst-2.0.12.tar.xz
diff --git a/.gitignore b/.gitignore
index 8cf5c4a..8a88fed 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-SOURCES/clutter-gst-2.0.4.tar.xz
+SOURCES/clutter-gst-2.0.12.tar.xz
diff --git a/SOURCES/0001-video-sink-clear-buffer-in-flush.patch b/SOURCES/0001-video-sink-clear-buffer-in-flush.patch
new file mode 100644
index 0000000..9230aab
--- /dev/null
+++ b/SOURCES/0001-video-sink-clear-buffer-in-flush.patch
@@ -0,0 +1,58 @@
+From 6dd67050554caf7e689a0de28807631b56d01b16 Mon Sep 17 00:00:00 2001
+From: Wim Taymans <wtaymans@redhat.com>
+Date: Tue, 19 May 2015 13:31:12 +0200
+Subject: [PATCH] video-sink: clear buffer in flush
+
+We need to release our refs to the buffer in FLUSH_START so that
+upstream can free and reuse the memory.
+---
+ clutter-gst/clutter-gst-video-sink.c | 26 ++++++++++++++++++++++++++
+ 1 file changed, 26 insertions(+)
+
+diff --git a/clutter-gst/clutter-gst-video-sink.c b/clutter-gst/clutter-gst-video-sink.c
+index 63867d4..ef6d996 100644
+--- a/clutter-gst/clutter-gst-video-sink.c
++++ b/clutter-gst/clutter-gst-video-sink.c
+@@ -1971,6 +1971,31 @@ clutter_gst_video_sink_propose_allocation (GstBaseSink * base_sink, GstQuery * q
+   return TRUE;
+ }
+ 
++static gboolean
++clutter_gst_video_sink_event (GstBaseSink * basesink, GstEvent * event)
++{
++  ClutterGstVideoSink *sink = CLUTTER_GST_VIDEO_SINK (basesink);
++  ClutterGstVideoSinkPrivate *priv = sink->priv;
++  ClutterGstSource *gst_source = priv->source;
++
++  switch (GST_EVENT_TYPE (event)) {
++    case GST_EVENT_FLUSH_START:
++      g_mutex_lock (&gst_source->buffer_lock);
++      if (gst_source->buffer) {
++        GST_DEBUG ("Freeing existing buffer %p", gst_source->buffer);
++        gst_buffer_unref (gst_source->buffer);
++        gst_source->buffer = NULL;
++      }
++      g_mutex_unlock (&gst_source->buffer_lock);
++      break;
++
++    default:
++      break;
++  }
++
++  return GST_BASE_SINK_CLASS (parent_class)->event (basesink, event);
++}
++
+ static void
+ clutter_gst_video_sink_class_init (ClutterGstVideoSinkClass * klass)
+ {
+@@ -2007,6 +2032,7 @@ clutter_gst_video_sink_class_init (ClutterGstVideoSinkClass * klass)
+   gstbase_sink_class->set_caps = clutter_gst_video_sink_set_caps;
+   gstbase_sink_class->get_caps = clutter_gst_video_sink_get_caps;
+   gstbase_sink_class->propose_allocation = clutter_gst_video_sink_propose_allocation;
++  gstbase_sink_class->event = clutter_gst_video_sink_event;
+ 
+   /**
+    * ClutterGstVideoSink:texture:
+-- 
+2.1.0
+
diff --git a/SPECS/clutter-gst2.spec b/SPECS/clutter-gst2.spec
index 2b344ac..49288dd 100644
--- a/SPECS/clutter-gst2.spec
+++ b/SPECS/clutter-gst2.spec
@@ -1,11 +1,12 @@
 Name:           clutter-gst2
-Version:        2.0.4
-Release:        3%{?dist}
+Version:        2.0.12
+Release:        2%{?dist}
 Summary:        GStreamer integration for Clutter
 
 License:        LGPLv2+
 URL:            http://www.clutter-project.org
 Source0:        http://ftp.gnome.org/pub/GNOME/sources/clutter-gst/2.0/clutter-gst-%{version}.tar.xz
+Patch1:         0001-video-sink-clear-buffer-in-flush.patch
 
 BuildRequires:  clutter-devel
 BuildRequires:  gobject-introspection-devel
@@ -33,6 +34,7 @@ developing applications that use clutter-gst API version 2.0.
 
 %prep
 %setup -q -n clutter-gst-%{version}
+%patch1 -p1
 
 %build
 %configure
@@ -64,6 +66,14 @@ rm -rf $RPM_BUILD_ROOT%{_datadir}/gtk-doc/
 #doc #{_datadir}/gtk-doc/
 
 %changelog
+* Tue May 19 2015 Wim Taymans <wtaymans@redhat.com> - 2.0.12-2
+- Add patch to flush video sink, fixes errors in cheese
+- Resolves: #1174515
+
+* Thu Mar 19 2015 Richard Hughes <rhughes@redhat.com> - 2.0.12-1
+- Update to 2.0.12
+- Resolves: #1174515
+
 * Fri Jan 24 2014 Daniel Mach <dmach@redhat.com> - 2.0.4-3
 - Mass rebuild 2014-01-24