Start xanim only when we are ready to play

Renamed StartPlay in Play
Added wxVideoBaseDriver::GetSize


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3521 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Guilhem Lavaux
1999-08-29 14:40:11 +00:00
parent a2b8bd5537
commit b83290c3eb
5 changed files with 41 additions and 22 deletions

View File

@@ -233,8 +233,10 @@ FAIL_WITH(m_output->Write(&signature, 4).LastWrite() != 4, wxSOUND_INVSTRM);
pcm->Signed(TRUE);
pcm->SetOrder(wxLITTLE_ENDIAN);
if (!SetSoundFormat(*pcm))
if (!SetSoundFormat(*pcm)) {
delete pcm;
return FALSE;
}
delete pcm;
}

View File

@@ -83,9 +83,9 @@ wxFrame *wxVideoCreateFrame(wxVideoBaseDriver *vid_drv)
vid_out->DynamicSize(TRUE);
frame->Layout();
frame->Show(TRUE);
wxYield();
vid_drv->AttachOutput(*vid_out);
vid_drv->Play();
return frame;
}

View File

@@ -67,32 +67,39 @@ protected:
public:
friend class wxVideoOutput;
///
//
wxVideoBaseDriver();
///
//
wxVideoBaseDriver(wxInputStream& str);
///
//
virtual ~wxVideoBaseDriver();
///
//
virtual bool Play() = 0;
//
virtual bool Stop() = 0;
//
virtual bool Pause() = 0;
///
//
virtual bool Resume() = 0;
///
//
virtual bool SetVolume(wxUint8 vol) = 0;
///
//
virtual bool Resize(wxUint16 w, wxUint16 h) = 0;
//
virtual bool GetSize(wxSize& size) const = 0;
///
//
virtual bool IsCapable(wxVideoType WXUNUSED(v_type)) { return FALSE; }
///
//
virtual void OnFinished() {}
///
//
virtual bool AttachOutput(wxVideoOutput& output);
///
//
virtual void DetachOutput();
};

View File

@@ -60,13 +60,13 @@ wxVideoXANIM::wxVideoXANIM(wxInputStream& str)
wxVideoXANIM::~wxVideoXANIM()
{
if (m_xanim_started)
StopPlay();
Stop();
delete m_internal;
wxRemoveFile(m_filename);
}
bool wxVideoXANIM::StartPlay()
bool wxVideoXANIM::Play()
{
if (!m_paused && m_xanim_started)
return TRUE;
@@ -75,7 +75,8 @@ bool wxVideoXANIM::StartPlay()
return TRUE;
}
if (SendCommand(" ")) {
// The movie starts with xanim
if (RestartXANIM()) {
m_paused = FALSE;
return TRUE;
}
@@ -100,15 +101,17 @@ bool wxVideoXANIM::Resume()
return FALSE;
}
void wxVideoXANIM::StopPlay()
bool wxVideoXANIM::Stop()
{
if (!m_xanim_started)
return;
return FALSE;
SendCommand("q");
m_xanim_started = FALSE;
m_paused = FALSE;
return TRUE;
}
bool wxVideoXANIM::SetVolume(wxUint8 vol)
@@ -127,6 +130,12 @@ bool wxVideoXANIM::Resize(wxUint16 WXUNUSED(w), wxUint16 WXUNUSED(h))
return FALSE;
}
bool wxVideoXANIM::GetSize(wxSize& size) const
{
// Not implemented
return FALSE;
}
bool wxVideoXANIM::IsCapable(wxVideoType v_type)
{
if (v_type == wxVIDEO_MSAVI || v_type == wxVIDEO_MPEG ||
@@ -142,7 +151,7 @@ bool wxVideoXANIM::AttachOutput(wxVideoOutput& out)
if (!wxVideoBaseDriver::AttachOutput(out))
return FALSE;
return RestartXANIM();
return TRUE;
}
void wxVideoXANIM::DetachOutput()
@@ -229,7 +238,7 @@ bool wxVideoXANIM::RestartXANIM()
// wxYield();
}
// m_paused = TRUE;
m_paused = FALSE;
m_xanim_started = TRUE;
return TRUE;

View File

@@ -45,13 +45,14 @@ public:
wxVideoXANIM(wxInputStream& str);
~wxVideoXANIM();
bool StartPlay();
bool Play();
bool Pause();
bool Resume();
void StopPlay();
bool Stop();
bool SetVolume(wxUint8 vol);
bool Resize(wxUint16 w, wxUint16 h);
bool GetSize(wxSize& size) const;
bool IsCapable(wxVideoType v_type);