From: Guilhem Lavaux Date: Wed, 23 Dec 1998 18:16:19 +0000 (+0000) Subject: * Fixes X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/926c550dc5347b149be7a5f02dd452865a8a524d?ds=sidebyside * Fixes git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1258 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/configure.in b/configure.in index ed5e745cc9..09f8bd0507 100644 --- a/configure.in +++ b/configure.in @@ -1417,35 +1417,49 @@ AC_OVERRIDES(threads,threads, **--without-threads Force disabling threads, wxUSE_THREADS) -dnl AC_ARG_WITH(threads, -dnl [**--without-threads Force disabling threads ], -dnl [wxUSE_THREADS="$withval"]) - if test "$wxUSE_THREADS" = "1"; then - UNIX_THREAD="gtk/threadno.cpp" - dnl For glibc 2 users who have the old libc 5 too + case "$os" in + solaris*) - AC_CHECK_LIB(pthread-0.7, pthread_create, [ - UNIX_THREAD="gtk/threadpsx.cpp" - THREADS_LINK="-lpthread-0.7" - ],[ - AC_CHECK_HEADER(sys/prctl.h, [ - UNIX_THREAD="gtk/threadsgi.cpp" - ]) + AC_CHECK_LIB(thread, thr_create, [ + UNIX_THREAD="gtk/threadsol.cpp" + THREADS_LINK="-lthread" + ]) + ;; + + *) + + UNIX_THREAD="gtk/threadno.cpp" + + dnl For glibc 2 users who have the old libc 5 too - dnl pthread_create is always available in pthread but it seems not to be - dnl the case for pthread_setcanceltype. + AC_CHECK_LIB(pthread-0.7, pthread_create, [ + UNIX_THREAD="gtk/threadpsx.cpp" + THREADS_LINK="-lpthread-0.7" + ],[ + AC_CHECK_HEADER(sys/prctl.h, [ + UNIX_THREAD="gtk/threadsgi.cpp" + ]) + + dnl pthread_create is always available in pthread but it seems not to be + dnl the case for pthread_setcanceltype. - AC_CHECK_LIB(pthread, pthread_setcanceltype, [ + AC_CHECK_LIB(pthread, pthread_setcanceltype, [ UNIX_THREAD="gtk/threadpsx.cpp" THREADS_LINK="-lpthread" + ]) + ]) + AC_CHECK_LIB(pthreads, pthread_setcanceltype, [ + UNIX_THREAD="gtk/threadpsx.cpp" + THREADS_LINK="-lpthreads" ]) - ]) - AC_CHECK_LIB(pthreads, pthread_setcanceltype, [ - UNIX_THREAD="gtk/threadpsx.cpp" - THREADS_LINK="-lpthreads" - ]) + + AC_CHECK_LIB(posix4, printf, [ + THREADS_LINK="$THREADS_LINK -lposix4" + ]);; + + esac fi if test "$wxUSE_MOTIF" = "1"; then diff --git a/include/wx/stream.h b/include/wx/stream.h index f70fb820ea..25f04afbcc 100644 --- a/include/wx/stream.h +++ b/include/wx/stream.h @@ -114,8 +114,10 @@ class WXDLLEXPORT wxStreamBuffer { // --------------------------------------------------------------------------- typedef enum { - wxStream_NOERROR, - wxStream_EOF + wxStream_NOERROR = 0, + wxStream_EOF, + wxStream_WRITE_ERR, + wxStream_READ_ERR } wxStreamError; class WXDLLEXPORT wxStreamBase { diff --git a/src/common/serbase.cpp b/src/common/serbase.cpp index 1f2ea96f9c..803893ec9c 100644 --- a/src/common/serbase.cpp +++ b/src/common/serbase.cpp @@ -13,6 +13,8 @@ #pragma implementation "serbase.h" #endif +#ifdef wxUSE_SERIAL + // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -118,3 +120,5 @@ void WXSERIAL(wxHashTable)::LoadObject(wxObjectInputStream& s) for (i=0;ihash_table[i] = (wxList *)s.GetChild(); } + +#endif diff --git a/src/common/stream.cpp b/src/common/stream.cpp index 1ea04bc61d..fcd0e85e00 100644 --- a/src/common/stream.cpp +++ b/src/common/stream.cpp @@ -30,6 +30,10 @@ // wxStreamBuffer // ---------------------------------------------------------------------------- +#define CHECK_ERROR(err) \ + if (m_stream->m_lasterror == wxStream_NOERROR) \ + m_stream->m_lasterror = err + wxStreamBuffer::wxStreamBuffer(wxStreamBase& stream, BufMode mode) : m_buffer_start(NULL), m_buffer_end(NULL), m_buffer_pos(NULL), m_buffer_size(0), m_fixed(TRUE), m_flushable(TRUE), m_stream(&stream), @@ -107,7 +111,8 @@ void wxStreamBuffer::SetBufferIO(size_t bufsize) { char *b_start; - wxDELETE(m_buffer_start); + if (m_destroybuf) + wxDELETEA(m_buffer_start); if (!bufsize) { m_buffer_start = NULL; @@ -233,7 +238,7 @@ void wxStreamBuffer::PutChar(char c) } if (!GetDataLeft() && !FlushBuffer()) { - m_stream->m_lasterror = wxStream_EOF; + CHECK_ERROR(wxStream_READ_ERR); return; } @@ -253,7 +258,7 @@ char wxStreamBuffer::GetChar() } if (!GetDataLeft()) { - m_stream->m_lasterror = wxStream_EOF; + CHECK_ERROR(wxStream_READ_ERR); return 0; } @@ -277,9 +282,8 @@ size_t wxStreamBuffer::Read(void *buffer, size_t size) buffer = (void *)((char *)buffer+m_stream->m_lastcount); - if (!m_buffer_size) { + if (!m_buffer_size) return (m_stream->m_lastcount += m_stream->OnSysRead(buffer, size)); - } // ----------------- // Buffering enabled @@ -297,8 +301,7 @@ size_t wxStreamBuffer::Read(void *buffer, size_t size) buffer = (char *)buffer + buf_left; // ANSI C++ violation. if (!FillBuffer()) { - if (m_stream->m_lasterror == wxStream_NOERROR) - m_stream->m_lasterror = wxStream_EOF; + CHECK_ERROR(wxStream_READ_ERR); return (m_stream->m_lastcount = orig_size-size); } } else { @@ -352,8 +355,7 @@ size_t wxStreamBuffer::Write(const void *buffer, size_t size) buffer = (char *)buffer + buf_left; // ANSI C++ violation. if (!FlushBuffer()) { - if (m_stream->m_lasterror == wxStream_NOERROR) - m_stream->m_lasterror = wxStream_EOF; + CHECK_ERROR(wxStream_WRITE_ERR); return (m_stream->m_lastcount = orig_size-size); } @@ -373,10 +375,12 @@ size_t wxStreamBuffer::Write(wxStreamBuffer *sbuf) { char buf[BUF_TEMP_SIZE]; size_t s = 0, bytes_count = BUF_TEMP_SIZE; + size_t s_size; while (bytes_count == BUF_TEMP_SIZE) { - if (m_stream->StreamSize() < bytes_count) - bytes_count = m_stream->StreamSize(); + s_size = (sbuf->GetDataLeft() < GetDataLeft()) ? sbuf->GetDataLeft() : GetDataLeft(); + if (s_size < bytes_count) + bytes_count = s_size; bytes_count = sbuf->Read(buf, bytes_count); bytes_count = Write(buf, bytes_count); s += bytes_count; diff --git a/src/gtk/threadno.cpp b/src/gtk/threadno.cpp index ee844fbf0f..f6532847ab 100644 --- a/src/gtk/threadno.cpp +++ b/src/gtk/threadno.cpp @@ -1,7 +1,7 @@ ///////////////////////////////////////////////////////////////////////////// // Name: thread.cpp -// Purpose: No thread support -// Author: Original from Wolfram Gloger/Guilhem Lavaux +// Purpose: Solaris thread support +// Author: Guilhem Lavaux // Modified by: // Created: 04/22/98 // RCS-ID: $Id$ diff --git a/src/gtk1/threadno.cpp b/src/gtk1/threadno.cpp index ee844fbf0f..f6532847ab 100644 --- a/src/gtk1/threadno.cpp +++ b/src/gtk1/threadno.cpp @@ -1,7 +1,7 @@ ///////////////////////////////////////////////////////////////////////////// // Name: thread.cpp -// Purpose: No thread support -// Author: Original from Wolfram Gloger/Guilhem Lavaux +// Purpose: Solaris thread support +// Author: Guilhem Lavaux // Modified by: // Created: 04/22/98 // RCS-ID: $Id$ diff --git a/utils/wxMMedia/mmfile.cpp b/utils/wxMMedia/mmfile.cpp index fa57adfc7f..011726fc3a 100644 --- a/utils/wxMMedia/mmfile.cpp +++ b/utils/wxMMedia/mmfile.cpp @@ -16,7 +16,7 @@ #include "wx/wx.h" #endif #include -#include +#include #include #include "mmfile.h" diff --git a/utils/wxMMedia/sndfrag.cpp b/utils/wxMMedia/sndfrag.cpp index cd4a76bce8..9b4e46ffdc 100644 --- a/utils/wxMMedia/sndfrag.cpp +++ b/utils/wxMMedia/sndfrag.cpp @@ -53,7 +53,7 @@ void wxFragmentBuffer::AbortBuffer(wxSndBuffer *buf) } wxFragmentBuffer::wxFragBufPtr *wxFragmentBuffer::FindFreeBuffer( - wxFragBufPtr *list, wxUint8 max_queue) + xFragBufPtr *list, wxUint8 max_queue) { if (!list) return NULL; @@ -71,6 +71,7 @@ bool wxFragmentBuffer::NotifyOutputBuffer(wxSndBuffer *buf) wxFragBufPtr *ptr; char *raw_buf; wxUint32 rawbuf_size; + wxSoundCodec *codec = buf->GetCurrentCodec(); if (!m_iodrv->OnSetupDriver(*buf, wxSND_OUTPUT)) return FALSE; @@ -82,15 +83,14 @@ bool wxFragmentBuffer::NotifyOutputBuffer(wxSndBuffer *buf) if (!ptr) return FALSE; - // Find the end of the buffer - raw_buf = ptr->data + ptr->ptr; - rawbuf_size = ptr->size - ptr->ptr; + codec->SetOutStream(ptr->sndbuf); + codec->InitIO(m_drvformat); // Fill it up - buf->OnNeedOutputData(raw_buf, rawbuf_size); + codec->Decode(); // No data to fill the buffer: dequeue the current wxSndBuffer - if (!rawbuf_size) { + if (!codec->Available()) { if (buf->IsNotSet(wxSND_KEEPQUEUED)) { buf->Set(wxSND_UNQUEUEING); m_iodrv->m_buffers.DeleteObject(buf); @@ -101,10 +101,8 @@ bool wxFragmentBuffer::NotifyOutputBuffer(wxSndBuffer *buf) // Data: append it to the list ptr->buffers->Append(buf); - ptr->ptr += rawbuf_size; - // Output buffer full: send it to the driver - if (ptr->ptr == ptr->size) { + if (ptr->sndbuf->GetDataLeft()) { ptr->state = wxBUFFER_FFILLED; OnBufferFilled(ptr, wxSND_OUTPUT); } @@ -113,18 +111,19 @@ bool wxFragmentBuffer::NotifyOutputBuffer(wxSndBuffer *buf) bool wxFragmentBuffer::NotifyInputBuffer(wxSndBuffer *buf) { - wxFragBufPtr *ptr; - char *raw_buf; - wxUint32 rawbuf_size; - - if (!m_iodrv->OnSetupDriver(*buf, wxSND_INPUT)) - return FALSE; - - while (1) { - ptr = FindFreeBuffer(m_lstiptrs, m_maxiq); - if (!ptr) + /* + wxFragBufPtr *ptr; + char *raw_buf; + wxUint32 rawbuf_size; + + if (!m_iodrv->OnSetupDriver(*buf, wxSND_INPUT)) return FALSE; + while (1) { + ptr = FindFreeBuffer(m_lstiptrs, m_maxiq); + if (!ptr) + return FALSE; + raw_buf = ptr->data + ptr->ptr; rawbuf_size = ptr->size - ptr->ptr; @@ -137,7 +136,6 @@ bool wxFragmentBuffer::NotifyInputBuffer(wxSndBuffer *buf) m_iodrv->m_buffers.DeleteObject(buf); } - // Get data now when there isn't anymore buffer in the queue if (!LastBuffer() && ptr->ptr) { ptr->state = wxBUFFER_FFILLED; if (!OnBufferFilled(ptr, wxSND_INPUT)) @@ -149,13 +147,15 @@ bool wxFragmentBuffer::NotifyInputBuffer(wxSndBuffer *buf) ptr->ptr += rawbuf_size; - // Input buffer full => get data + if (ptr->ptr == ptr->size) { ptr->state = wxBUFFER_FFILLED; if (!OnBufferFilled(ptr, wxSND_INPUT)) return FALSE; } } + */ + return TRUE; } @@ -213,7 +213,7 @@ void wxFragmentBuffer::ClearBuffer(wxFragBufPtr *ptr) node = ptr->buffers->First(); } - ptr->ptr = 0; + ptr->sndbuf->ResetBuffer(); ptr->state = wxBUFFER_FREE; } diff --git a/utils/wxMMedia/sndfrag.h b/utils/wxMMedia/sndfrag.h index 8acb31f9cf..d0679087e4 100644 --- a/utils/wxMMedia/sndfrag.h +++ b/utils/wxMMedia/sndfrag.h @@ -54,6 +54,8 @@ protected: wxFragBufPtr *m_lstoptrs, *m_lstiptrs; /// bool m_buf2free, m_dontq, m_freeing; + /// + wxSoundDataFormat m_drvformat; public: /// wxFragmentBuffer(wxSound& io_drv); diff --git a/utils/wxMMedia/sndfrmt.cpp b/utils/wxMMedia/sndfrmt.cpp index fb933b4be9..a489109d1e 100644 --- a/utils/wxMMedia/sndfrmt.cpp +++ b/utils/wxMMedia/sndfrmt.cpp @@ -4,7 +4,6 @@ #include "sndsnd.h" #include "sndfrmt.h" #include "sndpcm.h" -#include // ---------------------------------------------------------------------------- // wxSoundDataFormat @@ -21,6 +20,19 @@ wxSoundDataFormat::wxSoundDataFormat() m_codcreate = TRUE; } +wxSoundDataFormat::wxSoundDataFormat(const wxSoundDataFormat& format) +{ + m_srate = format.m_srate; + m_bps = format.m_bps; + m_channels = format.m_channels; + m_codno = format.m_codno; + m_sign = format.m_sign; + m_byteorder = format.m_byteorder; + m_codchange = FALSE; + m_codcreate = TRUE; + m_codec = NULL; +} + wxSoundDataFormat::~wxSoundDataFormat() { wxDELETE(m_codec); @@ -62,7 +74,7 @@ wxSoundCodec *wxSoundDataFormat::GetCodec() return NULL; if (m_codchange) - wxDELETEA(m_codec); + wxDELETE(m_codec); if (m_codec) return m_codec; @@ -148,6 +160,7 @@ wxSoundCodec::wxSoundCodec() m_in_sound = NULL; m_out_sound = NULL; m_init = TRUE; + m_chain_codec = NULL; } wxSoundCodec::~wxSoundCodec() diff --git a/utils/wxMMedia/sndfrmt.h b/utils/wxMMedia/sndfrmt.h index feb0ad62d2..1e4249bf9e 100644 --- a/utils/wxMMedia/sndfrmt.h +++ b/utils/wxMMedia/sndfrmt.h @@ -6,6 +6,7 @@ #endif #include +#include class wxSndBuffer; @@ -19,6 +20,7 @@ class wxSoundCodec; class wxSoundDataFormat { public: wxSoundDataFormat(); + wxSoundDataFormat(const wxSoundDataFormat& format); ~wxSoundDataFormat(); void SetSampleRate(int srate) { m_srate = srate; } @@ -78,7 +80,9 @@ class wxSoundCodec : public wxObject, public wxStreamBase { inline wxStreamBuffer *GetInStream() const { return m_in_sound; } inline wxStreamBuffer *GetOutStream() const { return m_out_sound; } - inline bool Good() const { return (m_in_sound->Stream()->LastError() == wxStream_NOERROR) && (m_out_sound->Stream()->LastError() == wxStream_NOERROR); } + inline bool StreamOk() const + { return (m_in_sound->Stream()->LastError() == wxStream_NOERROR) && + (m_out_sound->Stream()->LastError() == wxStream_NOERROR); } virtual size_t GetByteRate() const = 0; virtual wxSoundDataFormat GetPreferredFormat(int codec = 0) const = 0; diff --git a/utils/wxMMedia/sndmulaw.cpp b/utils/wxMMedia/sndmulaw.cpp index f42e5a464e..0cb1823077 100644 --- a/utils/wxMMedia/sndmulaw.cpp +++ b/utils/wxMMedia/sndmulaw.cpp @@ -27,7 +27,7 @@ void wxSoundMulawCodec::Decode() InitMode(DECODING); - while (!Good()) { + while (!StreamOk()) { smp = ulaw2linear(m_in_sound->GetChar()); #ifdef USE_BE_MACH m_out_sound->PutChar((smp & 0xff00) >> 8); @@ -50,7 +50,7 @@ void wxSoundMulawCodec::Encode() InitMode(ENCODING); - while (!Good()) { + while (!StreamOk()) { #ifdef USE_BE_MACH smp = ((unsigned short)m_in_sound->GetChar()) << 8; smp |= m_in_sound->GetChar() & 0xff; diff --git a/utils/wxMMedia/sndpcm.cpp b/utils/wxMMedia/sndpcm.cpp index a1c5be0cf0..acf37b661b 100644 --- a/utils/wxMMedia/sndpcm.cpp +++ b/utils/wxMMedia/sndpcm.cpp @@ -3,7 +3,6 @@ #endif #include "sndsnd.h" #include "sndpcm.h" -#include #define WX_BIG_ENDIAN 0 @@ -11,8 +10,7 @@ wxSoundPcmCodec::wxSoundPcmCodec() : wxSoundCodec() { m_orig_format.SetCodecCreate(FALSE); - m_orig_format.SetCodecNo(1); - m_char_bool = FALSE; + m_orig_format.SetCodecNo(WXSOUND_PCM); } wxSoundPcmCodec::~wxSoundPcmCodec() @@ -31,7 +29,6 @@ wxSoundDataFormat wxSoundPcmCodec::GetPreferredFormat(int codec) const wxSoundDataFormat prefFormat; prefFormat = m_orig_format; - prefFormat.SetCodecNo(WXSOUND_PCM); return prefFormat; } @@ -69,20 +66,16 @@ void wxSoundPcmCodec::Decode() #define GET() (m_in_sound->GetChar()) #define PUT(c) (m_out_sound->PutChar(c)) -#define OUT_ERROR() (out->LastError() == wxStream_NOERROR) -#define IN_ERROR() (in->LastError() == wxStream_NOERROR) void wxSoundPcmCodec::InputSign8() { unsigned char signer = 0; - wxStreamBase *in = m_out_sound->Stream(), *out = m_in_sound->Stream(); if (m_io_format.GetSign() != m_orig_format.GetSign()) signer = 128; - while (IN_ERROR() && OUT_ERROR()) + while (StreamOk()) PUT(GET() + signer); - } // --------------------------------------------------------------------------- @@ -91,9 +84,8 @@ void wxSoundPcmCodec::InputSign8() void wxSoundPcmCodec::InputSwapAndSign16() { unsigned short signer1 = 0, signer2 = 0; - wxStreamBase *in = m_out_sound->Stream(), *out = m_in_sound->Stream(); bool swap = (m_io_format.GetByteOrder() != m_orig_format.GetByteOrder()); - char temp; + register char temp, temp2; if (m_io_format.GetSign() != m_orig_format.GetSign()) { if (m_io_format.GetByteOrder() == wxSND_SAMPLE_LE) @@ -103,22 +95,23 @@ void wxSoundPcmCodec::InputSwapAndSign16() } if (swap) { - while (IN_ERROR() && OUT_ERROR()) { - temp = GET() ^ signer1; - PUT(GET() ^ signer2); - if (OUT_ERROR()) { - m_char_bool = TRUE; - m_char_stack = temp; + while (StreamOk()) { + temp = GET(); + temp2 = GET(); + PUT(temp2 ^ signer2); + if (!StreamOk()) { + m_in_sound->WriteBack(temp); + m_in_sound->WriteBack(temp2); break; } - PUT(temp); + PUT(temp ^ signer1); } } else { - while (IN_ERROR() && OUT_ERROR()) { - PUT(GET() ^ signer1); - if (OUT_ERROR()) { - m_char_bool = TRUE; - m_char_stack = temp; + while (StreamOk()) { + temp = GET(); + PUT(temp ^ signer1); + if (!StreamOk()) { + m_in_sound->WriteBack(temp); break; } PUT(GET() ^ signer2); @@ -132,13 +125,12 @@ void wxSoundPcmCodec::InputSwapAndSign16() void wxSoundPcmCodec::OutputSign8() { - wxStreamBase *in = m_out_sound->Stream(), *out = m_in_sound->Stream(); unsigned char signer = 0; if (m_io_format.GetSign() != m_orig_format.GetSign()) signer = 128; - while (IN_ERROR() && OUT_ERROR()) + while (StreamOk()) PUT((char)(GET() + signer)); } @@ -148,14 +140,7 @@ void wxSoundPcmCodec::OutputSwapAndSign16() { bool swap = (m_io_format.GetByteOrder() != m_orig_format.GetByteOrder()); unsigned short signer1 = 0, signer2 = 0; - char temp; - wxStreamBase *in = m_out_sound->Stream(), *out = m_in_sound->Stream(); - - if (m_char_bool) { - PUT(GET()); - PUT(m_char_stack); - m_char_bool = FALSE; - } + register char temp, temp2; if (m_io_format.GetSign() != m_orig_format.GetSign()) if (m_io_format.GetByteOrder() == wxSND_SAMPLE_LE) @@ -164,25 +149,27 @@ void wxSoundPcmCodec::OutputSwapAndSign16() signer2 = 0x80; if (swap) { - while (IN_ERROR()) { + while (StreamOk()) { temp = GET(); - PUT(GET() ^ signer1); - if (OUT_ERROR()) { - m_char_stack = temp ^ signer2; - m_char_bool = TRUE; + temp2 = GET(); + PUT(temp2 ^ signer1); + if (!StreamOk()) { + m_in_sound->WriteBack(temp); + m_in_sound->WriteBack(temp2); break; } PUT(temp ^ signer2); } } else { - while (IN_ERROR()) { - PUT(GET() ^ signer1); - if (!OUT_ERROR()) { - m_char_stack = GET() ^ signer2; - m_char_bool = TRUE; + while (StreamOk()) { + temp = GET(); + temp2 = GET(); + PUT(temp ^ signer1); + if (!StreamOk()) { + m_in_sound->WriteBack(temp); break; } - PUT(GET() ^ signer2); + PUT(temp2 ^ signer2); } } diff --git a/utils/wxMMedia/snduss.cpp b/utils/wxMMedia/snduss.cpp index c98a741a12..e033c248f4 100644 --- a/utils/wxMMedia/snduss.cpp +++ b/utils/wxMMedia/snduss.cpp @@ -16,7 +16,6 @@ #include #include #include -#include #include "wx/app.h" #include "wx/utils.h" diff --git a/utils/wxMMedia/sndwav.cpp b/utils/wxMMedia/sndwav.cpp index ad6419147c..340d8ed2c3 100644 --- a/utils/wxMMedia/sndwav.cpp +++ b/utils/wxMMedia/sndwav.cpp @@ -86,9 +86,6 @@ wxUint32 wxSndWavCodec::PrepareToPlay() if (!riff_codec.FindChunk("data")) return 0; - m_sndformat.SetSampleRate(wav_hdr.sample_fq); - m_sndformat.SetBps(wav_hdr.bits_p_spl); - m_sndformat.SetChannels(wav_hdr.channels); m_sndmode = wxSND_OUTPUT; ChangeCodec(wav_hdr.format); diff --git a/utils/wxMMedia/vidbase.cpp b/utils/wxMMedia/vidbase.cpp index dbe8daeef4..ec0eab5aa8 100644 --- a/utils/wxMMedia/vidbase.cpp +++ b/utils/wxMMedia/vidbase.cpp @@ -10,7 +10,7 @@ #ifdef __GNUG__ #pragma implementation "vidbase.h" #endif -#include +#include #include "vidbase.h" #ifdef WX_PRECOMP #include "wx_prec.h" diff --git a/utils/wxMMedia/wave.cpp b/utils/wxMMedia/wave.cpp index 5f11afb1cc..740f86d0f5 100644 --- a/utils/wxMMedia/wave.cpp +++ b/utils/wxMMedia/wave.cpp @@ -12,7 +12,7 @@ #pragma implementation "wave.h" #endif -#include +#include #include "wave.h" wxWave::wxWave()