From: David Elliott Date: Mon, 18 Oct 2004 22:12:57 +0000 (+0000) Subject: Renamed m_hSnd to m_cocoaNSSound (match rest of wxCocoa). X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/a2c1097b8aad5df0ad1bd238ca23daec0a413da0 Renamed m_hSnd to m_cocoaNSSound (match rest of wxCocoa). Create delegate as a static member shared by all instances. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29974 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/cocoa/sound.h b/include/wx/cocoa/sound.h index e9f71ccfe4..86a2ca9a73 100644 --- a/include/wx/cocoa/sound.h +++ b/include/wx/cocoa/sound.h @@ -20,6 +20,7 @@ #if wxUSE_SOUND #include "wx/object.h" +#include "wx/cocoa/ObjcRef.h" class WXDLLEXPORT wxSound : public wxSoundBase { @@ -31,20 +32,21 @@ public: public: bool Create(const wxString& fileName, bool isResource = false); - bool IsOk() const { return m_hSnd != NULL; } + bool IsOk() const + { return m_cocoaNSSound; } static void Stop(); static bool IsPlaying(); inline WX_NSSound GetNSSound() - { return m_hSnd; } + { return m_cocoaNSSound; } protected: bool DoPlay(unsigned flags) const; private: - WX_NSSound m_hSnd; //NSSound handle + WX_NSSound m_cocoaNSSound; //NSSound handle wxString m_sndname; //file path int m_waveLength; //size of file in memory mode - struct objc_object * m_cocoaSoundDelegate; + static const wxObjcAutoRefFromAlloc sm_cocoaDelegate; }; #endif diff --git a/src/cocoa/sound.mm b/src/cocoa/sound.mm index 7c2daa5cb2..4931716b3d 100644 --- a/src/cocoa/sound.mm +++ b/src/cocoa/sound.mm @@ -61,39 +61,39 @@ bool isLastSoundInScope = false; @end // wxNSSoundDelegate +const wxObjcAutoRefFromAlloc wxSound::sm_cocoaDelegate = [[wxNSSoundDelegate alloc] init]; + // ------------------------------------------------------------------ // wxSound // ------------------------------------------------------------------ wxSound::wxSound() -: m_hSnd(NULL) +: m_cocoaNSSound(nil) , m_waveLength(0) { } wxSound::wxSound(const wxString& sFileName, bool isResource) -: m_hSnd(NULL) +: m_cocoaNSSound(nil) , m_waveLength(0) { Create(sFileName, isResource); } wxSound::wxSound(int size, const wxByte* data) -: m_hSnd(NULL) +: m_cocoaNSSound(nil) , m_waveLength(size) { NSData* theData = [[NSData alloc] dataWithBytesNoCopy:(void*)data length:size]; - m_hSnd = [[NSSound alloc] initWithData:theData]; + m_cocoaNSSound = [[NSSound alloc] initWithData:theData]; - m_cocoaSoundDelegate = [[wxNSSoundDelegate alloc] init]; } wxSound::~wxSound() { - if (m_hSnd != lastSound) + if (m_cocoaNSSound != lastSound) { - [m_hSnd release]; - [m_cocoaSoundDelegate release]; + [m_cocoaNSSound release]; } else isLastSoundInScope = false; @@ -108,19 +108,17 @@ bool wxSound::Create(const wxString& fileName, bool isResource) if (isResource) { //oftype could be @"snd" @"wav" or @"aiff"; nil or @"" autodetects (?) - m_hSnd = [[NSSound alloc] + m_cocoaNSSound = [[NSSound alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:wxNSStringWithWxString(fileName) ofType:nil] byReference:YES]; } else - m_hSnd = [[NSSound alloc] initWithContentsOfFile:wxNSStringWithWxString(fileName) byReference:YES]; - - m_cocoaSoundDelegate = [[wxNSSoundDelegate alloc] init]; + m_cocoaNSSound = [[NSSound alloc] initWithContentsOfFile:wxNSStringWithWxString(fileName) byReference:YES]; m_sndname = fileName; - return m_hSnd != nil; + return m_cocoaNSSound; } bool wxSound::DoPlay(unsigned flags) const @@ -132,20 +130,20 @@ bool wxSound::DoPlay(unsigned flags) const if (flags & wxSOUND_ASYNC) { - lastSound = m_hSnd; + lastSound = m_cocoaNSSound; isLastSoundLooping = (flags & wxSOUND_LOOP) == wxSOUND_LOOP; isLastSoundInScope = true; - [m_hSnd setDelegate:m_cocoaSoundDelegate]; - return [m_hSnd play]; + [m_cocoaNSSound setDelegate:sm_cocoaDelegate]; + return [m_cocoaNSSound play]; } else { - [m_hSnd setDelegate:nil]; + [m_cocoaNSSound setDelegate:nil]; //play until done - bool bOK = [m_hSnd play]; + bool bOK = [m_cocoaNSSound play]; - while ([m_hSnd isPlaying]) + while ([m_cocoaNSSound isPlaying]) { wxTheApp->Yield(false); }