X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c22edec9fceab1ddd75f886008dbd6218446201c..d109c5849ed117966311a44875c97ae3d77b44e5:/src/mac/carbon/sound.cpp diff --git a/src/mac/carbon/sound.cpp b/src/mac/carbon/sound.cpp index fc24d21ac3..f165552bf8 100644 --- a/src/mac/carbon/sound.cpp +++ b/src/mac/carbon/sound.cpp @@ -2,10 +2,10 @@ // 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 ///////////////////////////////////////////////////////////////////////////// @@ -19,6 +19,7 @@ #include "wx/file.h" #include "wx/sound.h" #include "wx/timer.h" +#include "wx/intl.h" #if wxUSE_SOUND @@ -41,7 +42,7 @@ // #ifdef __WXMAC__ -#include "wx/mac/private.h" +#include "wx/mac/uma.h" #include #include #endif @@ -222,7 +223,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; @@ -375,42 +376,74 @@ bool wxSound::DoPlay(unsigned flags) const if (!wxInitQT()) return false; - short movieResFile; - FSSpec sfFile; - -#ifdef __WXMAC__ - wxMacFilename2FSSpec( m_sndname , &sfFile ) ; -#else - int nError; - if ((nError = NativePathNameToFSSpec ((char*) m_sndname.c_str(), &sfFile, 0)) != noErr) + 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 ) { - wxLogSysError(wxString::Format(wxT("File:%s does not exist\nError:%i"), - m_sndname.c_str(), nError)); - return false; + Handle dataRef = NULL; + OSType dataRefType; + + err = QTNewDataReferenceFromFullPathCFString(wxMacCFStringHolder(m_sndname,wxLocale::GetSystemEncoding()), + //FIXME: Why does this have to be casted? + (unsigned int)kQTNativeDefaultPathStyle, + //FIXME: End + 0, &dataRef, &dataRefType); + + wxASSERT(err == noErr); + + if (NULL != dataRef || err != noErr) + { + err = NewMovieFromDataRef( &movie, newMovieDontAskUnresolvedDataRefs , NULL, dataRef, dataRefType ); + wxASSERT(err == noErr); + DisposeHandle(dataRef); + } } + else #endif - - if (OpenMovieFile (&sfFile, &movieResFile, fsRdPerm) != noErr) { - wxLogSysError(wxT("Quicktime couldn't open the file")); - return false; + short movieResFile; + FSSpec sfFile; +#ifdef __WXMAC__ + wxMacFilename2FSSpec( m_sndname , &sfFile ) ; +#else + 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 + if (OpenMovieFile (&sfFile, &movieResFile, fsRdPerm) != noErr) + { + wxLogSysError(wxT("Quicktime couldn't open the file")); + return false; + } + short movieResID = 0; + Str255 movieName; + + err = NewMovieFromFile ( + &movie, + movieResFile, + &movieResID, + movieName, + newMovieActive, + NULL); //wasChanged + + CloseMovieFile (movieResFile); } - - - short movieResID = 0; - Str255 movieName; - OSErr err; - - err = NewMovieFromFile ( - &movie, - movieResFile, - &movieResID, - movieName, - newMovieActive, - NULL); //wasChanged - - CloseMovieFile (movieResFile); - + if (err != noErr) { wxLogSysError(