Don't use timer inside wxSound in wxOSX/Cocoa.
The timer is only used by Carbon code, there is no need for it in Cocoa, so don't complicate things by starting it unnecessarily. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76324 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -27,19 +27,25 @@ public :
|
|||||||
virtual bool Play(unsigned int flags) = 0;
|
virtual bool Play(unsigned int flags) = 0;
|
||||||
// stops the sound and deletes the optional timer
|
// stops the sound and deletes the optional timer
|
||||||
virtual void Stop();
|
virtual void Stop();
|
||||||
// can be called by a timer for repeated tasks during playback
|
|
||||||
virtual void SoundTask();
|
|
||||||
// mark this to be deleted
|
// mark this to be deleted
|
||||||
virtual void MarkForDeletion();
|
virtual void MarkForDeletion();
|
||||||
virtual bool IsMarkedForDeletion() const { return m_markedForDeletion; }
|
virtual bool IsMarkedForDeletion() const { return m_markedForDeletion; }
|
||||||
|
|
||||||
// does the true work of stopping and cleaning up
|
// does the true work of stopping and cleaning up
|
||||||
virtual void DoStop() = 0;
|
virtual void DoStop() = 0;
|
||||||
|
|
||||||
|
#if wxOSX_USE_CARBON
|
||||||
|
// can be called by a timer for repeated tasks during playback
|
||||||
|
virtual void SoundTask();
|
||||||
|
|
||||||
protected :
|
protected :
|
||||||
void CreateAndStartTimer();
|
void CreateAndStartTimer();
|
||||||
|
|
||||||
unsigned int m_flags;
|
|
||||||
wxSoundTimer* m_pTimer;
|
wxSoundTimer* m_pTimer;
|
||||||
|
#endif // wxOSX_USE_CARBON
|
||||||
|
|
||||||
|
protected:
|
||||||
|
unsigned int m_flags;
|
||||||
bool m_markedForDeletion;
|
bool m_markedForDeletion;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
@@ -20,13 +20,16 @@
|
|||||||
#include "wx/string.h"
|
#include "wx/string.h"
|
||||||
#include "wx/intl.h"
|
#include "wx/intl.h"
|
||||||
#include "wx/log.h"
|
#include "wx/log.h"
|
||||||
#include "wx/timer.h"
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "wx/file.h"
|
#include "wx/file.h"
|
||||||
|
|
||||||
#include "wx/vector.h"
|
#include "wx/vector.h"
|
||||||
|
|
||||||
|
#if wxOSX_USE_CARBON
|
||||||
|
|
||||||
|
#include "wx/timer.h"
|
||||||
|
|
||||||
class wxSoundTimer : public wxTimer
|
class wxSoundTimer : public wxTimer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -52,11 +55,15 @@ protected:
|
|||||||
wxSoundData* m_sound;
|
wxSoundData* m_sound;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#endif // wxOSX_USE_CARBON
|
||||||
|
|
||||||
wxVector<wxSoundData*> s_soundsPlaying;
|
wxVector<wxSoundData*> s_soundsPlaying;
|
||||||
|
|
||||||
wxSoundData::wxSoundData()
|
wxSoundData::wxSoundData()
|
||||||
{
|
{
|
||||||
|
#if wxOSX_USE_CARBON
|
||||||
m_pTimer = NULL;
|
m_pTimer = NULL;
|
||||||
|
#endif // wxOSX_USE_CARBON
|
||||||
m_markedForDeletion = false;
|
m_markedForDeletion = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -72,9 +79,13 @@ void wxSoundData::MarkForDeletion()
|
|||||||
void wxSoundData::Stop()
|
void wxSoundData::Stop()
|
||||||
{
|
{
|
||||||
DoStop();
|
DoStop();
|
||||||
|
#if wxOSX_USE_CARBON
|
||||||
wxDELETE(m_pTimer);
|
wxDELETE(m_pTimer);
|
||||||
|
#endif // wxOSX_USE_CARBON
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if wxOSX_USE_CARBON
|
||||||
|
|
||||||
//Time between timer calls
|
//Time between timer calls
|
||||||
#define MOVIE_DELAY 100
|
#define MOVIE_DELAY 100
|
||||||
|
|
||||||
@@ -89,6 +100,8 @@ void wxSoundData::CreateAndStartTimer()
|
|||||||
m_pTimer->Start(MOVIE_DELAY, wxTIMER_CONTINUOUS);
|
m_pTimer->Start(MOVIE_DELAY, wxTIMER_CONTINUOUS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif // wxOSX_USE_CARBON
|
||||||
|
|
||||||
wxSound::wxSound()
|
wxSound::wxSound()
|
||||||
{
|
{
|
||||||
Init();
|
Init();
|
||||||
|
Reference in New Issue
Block a user