]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/mediactrl.cpp
check that the version of __sync_sub_and_fetch that returns a value is supported...
[wxWidgets.git] / src / mac / carbon / mediactrl.cpp
index 98d929e57fca04d31f90609a1e9be12dc0efe960..c6e16665ac26de6ceafa359517502be748ce76d4 100644 (file)
 
 #ifndef WX_PRECOMP
     #include "wx/log.h"
+    #include "wx/timer.h"
 #endif
 
 // uma is for wxMacFSSpec
 #include "wx/mac/uma.h"
-#include "wx/timer.h"
 
 // standard QT stuff
 #ifndef __DARWIN__
 #include <QuickTime/QuickTimeComponents.h>
 #endif
 
+#if !defined(__LP64__)
+#define USE_QUICKTIME 1
+#else
+#define USE_QUICKTIME 0
+#endif
+
+#if USE_QUICKTIME
+
 //---------------------------------------------------------------------------
 // Height and Width of movie controller in the movie control (apple samples)
 //---------------------------------------------------------------------------
@@ -75,7 +83,7 @@ class WXDLLIMPEXP_MEDIA wxQTMediaBackend : public wxMediaBackendCommonBase
 {
 public:
     wxQTMediaBackend();
-    ~wxQTMediaBackend();
+    virtual ~wxQTMediaBackend();
 
     virtual bool CreateControl(wxControl* ctrl, wxWindow* parent,
                                      wxWindowID id,
@@ -323,8 +331,7 @@ wxQTMediaBackend::~wxQTMediaBackend()
         // Dispose of the movie controller
         ::DisposeMovieController(m_mc);
         m_mc = NULL;
-        DisposeMCActionFilterWithRefConUPP(m_mcactionupp);
-
+        
         // Dispose of offscreen GWorld
         ::DisposeGWorld(m_movieWorld);
     }
@@ -431,13 +438,9 @@ bool wxQTMediaBackend::Load(const wxString& fileName)
         newMovieActive,
         NULL); // wasChanged
 
-    //
-    // check GetMoviesStickyError() because it may not find the
-    // proper codec and play black video and other strange effects,
-    // not to mention mess up the dynamic backend loading scheme
-    // of wxMediaCtrl - so it just does what the QuickTime player does
-    //
-    if (err == noErr && ::GetMoviesStickyError() == noErr)
+    // Do not use ::GetMoviesStickyError() here because it returns -2009
+    // a.k.a. invalid track on valid mpegs          
+    if (err == noErr && ::GetMoviesError() == noErr)
     {
         ::CloseMovieFile(movieResFile);
 
@@ -521,8 +524,7 @@ bool wxQTMediaBackend::Load(const wxURI& location)
         //  require it if you don't use a Movie Controller,
         //  which we don't by default.
         //
-        m_preprerollupp =
-            NewMoviePrePrerollCompleteUPP( wxQTMediaBackend::PPRMProc );
+        m_preprerollupp = wxQTMediaBackend::PPRMProc;
         ::PrePrerollMovie( m_movie, timeNow, playRate,
                            m_preprerollupp, (void*)this);
 
@@ -567,8 +569,7 @@ void wxQTMediaBackend::DoNewMovieController()
 
         // Setup a callback so we can tell when the user presses
         // play on the player controls
-        m_mcactionupp =
-            NewMCActionFilterWithRefConUPP( wxQTMediaBackend::MCFilterProc );
+        m_mcactionupp = wxQTMediaBackend::MCFilterProc;
         ::MCSetActionFilterWithRefCon( m_mc, m_mcactionupp, (long)this );
         wxASSERT(::GetMoviesError() == noErr);
 
@@ -625,9 +626,6 @@ void wxQTMediaBackend::DoNewMovieController()
 //---------------------------------------------------------------------------
 void wxQTMediaBackend::FinishLoad()
 {
-    // Dispose of the PrePrerollMovieUPP if we used it
-    DisposeMoviePrePrerollCompleteUPP(m_preprerollupp);
-
     // get the real size of the movie
     DoLoadBestSize();
 
@@ -1236,6 +1234,8 @@ pascal OSStatus wxQTMediaBackend::WindowEventHandler(
         return eventNotHandledErr;
 }
 
+#endif
+
 // in source file that contains stuff you don't directly use
 #include "wx/html/forcelnk.h"
 FORCE_LINK_ME(basewxmediabackends)