/////////////////////////////////////////////////////////////////////////////
-// Name: sound.cpp
+// Name: src/mac/carbon/sound.cpp
// Purpose: wxSound class implementation: optional
// Author: Ryan Norton
// Modified by: Stefan Csomor
// Created: 1998-01-01
// RCS-ID: $Id$
// Copyright: (c) Ryan Norton
-// Licence: wxWindows licence
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-#ifdef __GNUG__
-#pragma implementation "sound.h"
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#if wxUSE_SOUND
+
+#include "wx/sound.h"
+
+#ifndef WX_PRECOMP
+ #include "wx/object.h"
+ #include "wx/string.h"
+ #include "wx/intl.h"
+ #include "wx/log.h"
#endif
-#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
// Carbon QT Implementation Details -
//
#ifdef __WXMAC__
#include "wx/mac/uma.h"
+#ifndef __DARWIN__
#include <Movies.h>
#include <Gestalt.h>
#endif
+#endif
#if defined __WXMAC__ && defined __DARWIN__/*TARGET_CARBON*/
#ifdef __APPLE_CC__
#include <qtml.h>
#endif
+#ifndef __DARWIN__
#include <QuickTimeComponents.h>
+#else
+#include <QuickTime/QuickTimeComponents.h>
+#endif
//Time between timer calls
#define MOVIE_DELAY 100
DisposeMovie(m_movie);
Stop();
- //Note that ExitMovies() is not neccessary, but
+ //Note that ExitMovies() is not necessary, but
//the docs are fuzzy on whether or not TerminateQTML is
ExitMovies();
//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
+//../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,
+// 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 ( UMAGetSystemVersion() >= 0x1030 )
{
Handle dataRef = NULL;
- OSType dataRefType;
-
+ OSType dataRefType;
+
err = QTNewDataReferenceFromFullPathCFString(wxMacCFStringHolder(m_sndname,wxLocale::GetSystemEncoding()),
//FIXME: Why does this have to be casted?
- (unsigned int)kQTNativeDefaultPathStyle,
+ (unsigned int)kQTNativeDefaultPathStyle,
//FIXME: End
0, &dataRef, &dataRefType);
wxASSERT(err == noErr);
-
- if (NULL != dataRef || err != noErr)
+
+ if (NULL != dataRef || err != noErr)
{
err = NewMovieFromDataRef( &movie, newMovieDontAskUnresolvedDataRefs , NULL, dataRef, dataRefType );
wxASSERT(err == noErr);
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
CloseMovieFile (movieResFile);
}
-
+
if (err != noErr)
{
wxLogSysError(
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);
}