#ifndef WX_PRECOMP
#include "wx/defs.h"
#include "wx/app.h"
- #include "wx/module.h"
- #include "wx/msw/private.h"
#include "wx/string.h"
#endif
+#include "wx/module.h"
+#include "wx/msw/private.h"
+
// -------------------------------------------------------------------------
// MMedia headers
// -------------------------------------------------------------------------
wxNode *node = wxSoundHandleList->Find((long)hWnd);
if (!node)
return NULL;
- return (wxSoundStreamWin *)node->Data();
+ return (wxSoundStreamWin *)node->GetData();
}
struct _wxSoundInternal {
m_waiting_for = FALSE;
- if (!OpenDevice(wxSOUND_OUTPUT))
- return;
+ if (!OpenDevice(wxSOUND_OUTPUT)) {
+ m_snderror = wxSOUND_NOERROR; //next call to OpenDevice won't do this
+ if (!OpenDevice(wxSOUND_INPUT))
+ return;
+ }
CloseDevice();
}
// -----------------------------------------------------------------------
// _wxSoundHandlerWndProc: Window callback to handle buffer completion
// -----------------------------------------------------------------------
-LRESULT APIENTRY _EXPORT _wxSoundHandlerWndProc(HWND hWnd, UINT message,
- WPARAM wParam, LPARAM lParam)
+LRESULT APIENTRY _EXPORT
+
+ _wxSoundHandlerWndProc(HWND hWnd, UINT message,
+ WPARAM wParam, LPARAM WXUNUSED(lParam))
{
wxSoundStreamWin *sndwin;
{
FARPROC proc = MakeProcInstance((FARPROC)_wxSoundHandlerWndProc,
wxGetInstance());
- int error;
-
- m_internal->m_sndWin = ::CreateWindow(wxCanvasClassName, NULL, 0,
+ // NB: class name must be kept in sync with wxCanvasClassName in
+ // src/msw/app.cpp!
+ m_internal->m_sndWin = ::CreateWindow(wxT("wxWindowClass"), NULL, 0,
0, 0, 0, 0, NULL, (HMENU) NULL,
wxGetInstance(), NULL);
- error = GetLastError();
+ GetLastError();
::SetWindowLong(m_internal->m_sndWin, GWL_WNDPROC, (LONG)proc);
info->m_h_header = GlobalAlloc(GMEM_MOVEABLE | GMEM_SHARE, sizeof(WAVEHDR));
if (!info->m_h_data || !info->m_h_header) {
delete info;
- m_snderror = wxSOUND_MEMERR;
+ m_snderror = wxSOUND_MEMERROR;
return NULL;
}
// fragment finished. It reinitializes the parameters of the fragment and
// sends an event to the clients.
// -------------------------------------------------------------------------
-void wxSoundStreamWin::NotifyDoneBuffer(wxUint32 dev_handle, int flag)
+void wxSoundStreamWin::NotifyDoneBuffer(wxUint32 WXUNUSED(dev_handle), int flag)
{
wxSoundInfoHeader *info;
// -------------------------------------------------------------------------
// SetSoundFormat()
// -------------------------------------------------------------------------
-bool wxSoundStreamWin::SetSoundFormat(wxSoundFormatBase& base)
+bool wxSoundStreamWin::SetSoundFormat(const wxSoundFormatBase& base)
{
// TODO: detect best format
return wxSoundStream::SetSoundFormat(base);
// wxSoundWinModule
// --------------------------------------------------------------------------
-class WXDLLEXPORT wxSoundWinModule : public wxModule {
+class wxSoundWinModule : public wxModule {
DECLARE_DYNAMIC_CLASS(wxSoundWinModule)
public:
bool OnInit();