]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/sound.cpp
Use wxMBConvUTF8 when G_FILENAME_ENCODING is UTF-8, and set
[wxWidgets.git] / src / mac / carbon / sound.cpp
index 1911d62d7f27055103e5bac86d16297ec5d4a3bd..6533416d1fd24de3532e6e4853f2df3f72fdaf1b 100644 (file)
@@ -2,23 +2,26 @@
 // Name:        sound.cpp
 // Purpose:     wxSound class implementation: optional
 // Author:      Ryan Norton
-// Modified by:
+// Modified by: Stefan Csomor
 // Created:     1998-01-01
 // RCS-ID:      $Id$
-// Copyright:   (c) Ryan Norton, Stefan Csomor
+// Copyright:   (c) Ryan Norton
 // Licence:       wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
 #pragma implementation "sound.h"
 #endif
 
+#include "wx/wxprec.h"
+
 #include "wx/object.h"
 #include "wx/string.h"
 #include "wx/log.h"
 #include "wx/file.h"
 #include "wx/sound.h"
 #include "wx/timer.h"
+#include "wx/intl.h"
 
 #if wxUSE_SOUND
 
@@ -222,7 +225,7 @@ inline bool wxInitQT ()
         int nError;
         //-2093 no dll
             if ((nError = InitializeQTML(0)) != noErr)
-                wxLogSysError(wxString::Format("Couldn't Initialize Quicktime-%i", nError));
+                wxLogSysError(wxString::Format(wxT("Couldn't Initialize Quicktime-%i"), nError));
         #endif
         EnterMovies();
         return true;
@@ -376,6 +379,17 @@ bool wxSound::DoPlay(unsigned flags) const
                 return false;
 
             OSErr err = noErr ;
+//NB:  RN: Stefan - I think the 10.3 path functions are broken if kQTNativeDefaultPathStyle is
+//going to trigger a warning every time it is used - where its _supposed to be used_!!
+//(kQTNativePathStyle is negative but the function argument is unsigned!)
+//../src/mac/carbon/sound.cpp: In member function `virtual bool 
+//   wxSound::DoPlay(unsigned int) const':
+//../src/mac/carbon/sound.cpp:387: warning: passing negative value `
+//   kQTNativeDefaultPathStyle' for argument passing 2 of `OSErr 
+//   QTNewDataReferenceFromFullPathCFString(const __CFString*, long unsigned int, 
+//   long unsigned int, char***, OSType*)'
+//../src/mac/carbon/sound.cpp:387: warning: argument of negative value `
+//   kQTNativeDefaultPathStyle' to `long unsigned int'
 #if defined( __WXMAC__ ) && TARGET_API_MAC_OSX && ( MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_2 )
             if ( UMAGetSystemVersion() >= 0x1030 )
             {
@@ -383,11 +397,17 @@ bool wxSound::DoPlay(unsigned flags) const
                 OSType dataRefType;            
                 
                 err = QTNewDataReferenceFromFullPathCFString(wxMacCFStringHolder(m_sndname,wxLocale::GetSystemEncoding()),
-                    kQTNativeDefaultPathStyle, 0, &dataRef, &dataRefType);
+                    //FIXME: Why does this have to be casted?
+                    (unsigned int)kQTNativeDefaultPathStyle, 
+                    //FIXME: End
+                    0, &dataRef, &dataRefType);
 
-                if (NULL != dataRef) 
+                wxASSERT(err == noErr);
+                
+                if (NULL != dataRef || err != noErr) 
                 {
                     err = NewMovieFromDataRef( &movie, newMovieDontAskUnresolvedDataRefs , NULL, dataRef, dataRefType );
+                    wxASSERT(err == noErr);
                     DisposeHandle(dataRef);
                 }
             }
@@ -402,8 +422,10 @@ bool wxSound::DoPlay(unsigned flags) const
                 int nError;
                 if ((nError = NativePathNameToFSSpec ((char*) m_sndname.c_str(), &sfFile, 0)) != noErr)
                 {
+/*
                     wxLogSysError(wxString::Format(wxT("File:%s does not exist\nError:%i"),
                                     m_sndname.c_str(), nError));
+*/
                     return false;
                 }
 #endif
@@ -456,8 +478,10 @@ bool wxSound::DoPlay(unsigned flags) const
         wxASSERT_MSG(!(flags & wxSOUND_LOOP), wxT("Can't loop and play syncronously at the same time"));
 
         //Play movie until it ends, then exit
+        //Note that due to quicktime caching this may not always 
+        //work 100% correctly
         while (!IsMovieDone(movie))
-            MoviesTask(movie, 0);
+            MoviesTask(movie, 1);
 
         DisposeMovie(movie);
     }