public:
 
     wxGStreamerMediaBackend();
-    ~wxGStreamerMediaBackend();
+    virtual ~wxGStreamerMediaBackend();
 
     virtual bool CreateControl(wxControl* ctrl, wxWindow* parent,
                                      wxWindowID id,
 //
 // Called when the media is about to stop
 //-----------------------------------------------------------------------------
-void wxGStreamerMediaEventHandler::OnMediaFinish(wxMediaEvent& event)
+void wxGStreamerMediaEventHandler::OnMediaFinish(wxMediaEvent& WXUNUSED(event))
 {
     // (RN - I have no idea why I thought this was good behaviour....
     // maybe it made sense for streaming/nonseeking data but
             return false;
     }
 
+    // free current media resources
+    gst_element_set_state (m_playbin, GST_STATE_NULL);
+
     // Make sure the passed URI is valid and tell playbin to load it
     // non-file uris are encoded
     wxASSERT(gst_uri_protocol_is_valid("file"));