Commit Graph

37 Commits

Author SHA1 Message Date
PB
f57f214122 Remove BCC-specific hdrstop pragma from everywhere 2020-10-12 21:58:37 +02:00
Paul Cornett
948ddc6e0f Eliminate -Wcast-qual warnings with GCC and Clang
Use const_cast, mutable, and various other changes to avoid -Wcast-qual
2020-02-02 22:50:32 -08:00
Vadim Zeitlin
c010efc172 Avoid integer overflow when computing the sample size
While it seems to be harmless in this particular case, it still prevents
testing this code with UBSAN by triggering it here, so check that
multiplication doesn't overflow.
2017-12-30 18:52:57 +01:00
Vadim Zeitlin
61c7cf9a9c Fix yet another division by 0 when parsing WAV data
Ensure that the size of one sample (including all the channels) is non
zero before dividing by it.
2017-12-30 18:52:57 +01:00
Vadim Zeitlin
932f384c87 Avoid division by 0 when parsing WAV data
Don't divide by waveformat.uiBlockAlign which could be 0, but rather
multiply by it and verify that we get the expected result. This is more
robust, as it prevents crashes on malformed input and also slightly more
efficient even for correct input.
2017-12-30 18:52:57 +01:00
Vadim Zeitlin
45e8d13e13 Add format sub-chunk size check to WAV parsing
This fixes a crash due to reading beyond the buffer bounds when checking
for "data" if WAVEFORMAT::uiSize was too big.
2017-12-30 18:52:57 +01:00
nowhere
69cd6039eb Make parsing WAV data more robust
Check that we have enough data in the input instead of happily reading
out of bounds memory.

This fixes the most common problem of crashing on bad data which doesn't
look like WAV at all, but doesn't fix problems with parsing input which
does look like WAV, but is incorrect -- this will be done in subsequent
commits.
2017-12-30 18:52:36 +01:00
Vadim Zeitlin
2558c91ae8 Don't fail to okay all mono WAVs in OSS wxSound backend
Ever since the changes of 544c4a3bde
(almost 14 years ago), playing mono WAVs with wxSound completely failed
if setting the sound device to mono using SNDCTL_DSP_STEREO ioctl
failed. This doesn't look like a wise thing to do, so don't consider
this as a fatal failure, but just play mono as stereo (and even possibly
stereo as mono) instead.

This fixes the sound sample being broken out of the box on many (all?)
Linux systems.
2017-11-19 22:44:57 +01:00
Vadim Zeitlin
d788588cfc Use wxMutexLocker instead of manual Lock/Unlock() calls
This is safer and also makes the code simpler and shorter.
2017-11-19 22:37:36 +01:00
Vadim Zeitlin
6c1a557a0f Lock and unlock mutex in both wxSound threads using it
The code was completely broken as it locked the mutex in only one thread
and then tried to unlock it in another one, which made no sense, didn't
protect against anything and resulted in errors and assert failures.

Fix this by locking and unlocking the mutex in both threads before
accessing shared data or playing sound.

Closes #17990.
2017-11-19 22:37:36 +01:00
Vadim Zeitlin
6ebc56939f Acquire mutex before modifying variable in wxSoundSyncOnlyAdaptor
The mutex must be locked to avoid data races with the thread actually
playing the sound.
2017-11-19 22:37:36 +01:00
Vadim Zeitlin
f7e5fb61b1 Remove unused wxSoundSyncOnlyAdaptor::m_playing variable
It seems to have been replaced by wxSoundPlaybackStatus::m_playing a
long time ago but was still kept, resulting in confusion and always
returning false from IsPlaying() as it tested a wrong variable.

Fix this by removing this one completely and always using the other one
everywhere.
2017-11-19 22:37:36 +01:00
Dimitri Schoolwerth
8f8d58d193 Use wx-prefixed macros throughout the repository.
Change {DECLARE,IMPLEMENT}_*CLASS and {DECLARE,BEGIN,END}_EVENT_TABLE
occurrences to use the wx-prefixed version of the macros.
2015-04-23 22:00:35 +04:00
Paul Cornett
8b4ae731d3 use wxOVERRIDE
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76220 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-03-30 00:02:23 +00:00
Vadim Zeitlin
3f66f6a5b3 Remove all lines containing cvs/svn "$Id$" keyword.
This keyword is not expanded by Git which means it's not replaced with the
correct revision value in the releases made using git-based scripts and it's
confusing to have lines with unexpanded "$Id$" in the released files. As
expanding them with Git is not that simple (it could be done with git archive
and export-subst attribute) and there are not many benefits in having them in
the first place, just remove all these lines.

If nothing else, this will make an eventual transition to Git simpler.

Closes #14487.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74602 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-07-26 16:02:46 +00:00
Vadim Zeitlin
c559c4b3ef Change wxSound ctor from in-memory data to use size_t/void *.
This constructor previously used int and, especially annoyingly, wxByte* for
the data. Use standard void* for untyped binary data instead.

Also document this ctor as it seems to be implemented in all ports.

Closes #13451.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69178 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-09-21 15:08:02 +00:00
Vadim Zeitlin
5276b0a53c Use wxDELETE() and wxDELETEA() when possible.
Use wxDELETE[A]() functions which automatically NULL out their arguments after
deleting them instead of doing it manually.

Closes #9685.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64656 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-06-20 18:18:23 +00:00
Vadim Zeitlin
9a83f86094 Globally replace _T() with wxT().
Standardize on using a single macro across all wxWidgets sources and solve the name clash with Sun CC standard headers (see #10660).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61508 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-07-23 20:30:22 +00:00
Vadim Zeitlin
d3c7fc996a mark all dtors which are virtual because base class dtor is virtual explicitly virtual themselves
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41020 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-09-05 20:47:48 +00:00
Włodzimierz Skiba
02761f6cd4 Include wx/module.h according to precompiled headers of wx/wx.h (with other minor cleaning).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@40943 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-08-31 19:31:43 +00:00
Vadim Zeitlin
0aa7c44136 don't require at least 8 bytes of sound data (patch 1340767); do check that we have enough data before reading it (and crashing)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38021 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-03-12 13:29:05 +00:00
Vadim Zeitlin
455f6b8d94 fixed memory leaks in case of errors during file load in wxSound::Create() (coverity checker CID 54)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@37878 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-03-07 23:21:08 +00:00
Włodzimierz Skiba
521bf4ff3e Include order is wxprec.h=>defs.h=>platform.h=>setup.h so remove explicit setup.h inclusion not touched by chckconf.h.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@37162 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-01-26 16:50:23 +00:00
Vadim Zeitlin
3f9ee1cd85 fixed unused parameter warnings in non-debug build
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35849 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2005-10-08 21:24:32 +00:00
Mart Raudsepp
8907154c1a Nuke #pragma implementation/interface's
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35650 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2005-09-23 12:56:45 +00:00
Vadim Zeitlin
0586024f65 signed/unsigned comparison warning
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35568 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2005-09-18 14:23:05 +00:00
Vadim Zeitlin
c781c31638 added wx_truncate_cast and use it (sometimes instead of wx_static_cast) to explicitely show int truncation
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35539 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2005-09-17 21:03:45 +00:00
Włodzimierz Skiba
8fbe65e96d Second part of '[ 1216148 ] cleanup: unused variables and declarations'.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@34595 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2005-06-08 14:37:40 +00:00
Ron Lee
f8a586e08e Cruft cleanup from MJW, strip the tabs out of sound.cpp
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30480 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2004-11-12 03:30:07 +00:00
Julian Smart
655719367a Use old licence name
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27408 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2004-05-23 20:53:33 +00:00
Julian Smart
77ffb5937e Name and version changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27404 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2004-05-23 14:56:36 +00:00
Robin Dunn
544c4a3bde Changed the OSS backend to detect if the DSP requires a conversion of
the sampling data in order to play it.  Currently it fails if this is
the case but in the future a conversion could be done, or it could
fall-back to another backend that is able to handle it.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@26179 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2004-03-11 19:29:34 +00:00
Václav Slavík
3209f765e9 try SDL backend before OSS, it works better (temporary solution, will need better fix)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@26178 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2004-03-11 16:40:44 +00:00
Robert Roebling
a333f34d91 Compile fix for sound without threads. Not sure
if that is the optimal fix.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25872 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2004-02-19 19:17:59 +00:00
Václav Slavík
f156e20c8e renamed wxWave to wxSound; compatibility fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25474 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2004-02-02 13:34:35 +00:00
Václav Slavík
83f7f12df2 API and code changes to allowing stopping playback
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25464 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2004-02-02 00:49:39 +00:00
Václav Slavík
9be32e8f2d added support for async playback to Unix implementation of wxSound, implemented SDL backend for playback if OSS is not available, fixed OSS to work on non-Linux Unices
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25455 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2004-02-01 18:25:12 +00:00