Added 'stopsound()' to Magic plugin API.

Stopping longer sounds when user stops using tool (Shift & Kaleidoscope).
This commit is contained in:
William Kendrick 2007-11-21 16:15:49 +00:00
parent ca0cb771e5
commit 137797b2cd
5 changed files with 26 additions and 5 deletions

View file

@ -6,7 +6,7 @@
bill@newbreedsoftware.com
http://www.tuxpaint.org/
July 5, 2007 - August 23, 2007
July 5, 2007 - November 21, 2007
--------------------------------------------------------------------------
@ -460,6 +460,10 @@ Interfaces
The 'pan' and 'dist' values can be used to simulate location and
distance of the 'Magic' tool effect.
* void stopsound(void)
This function stops playing a sound played by playsound(). It is
useful to silence effects when the user stops using the tool (in
your 'release' function).
* void special_notify(int flag)
This function notifies Tux Paint of special events. Various
values defined in "tp_magic_api.h" can be 'or'ed together (using

View file

@ -15,7 +15,7 @@ New Breed Software</p>
<p><a href="mailto:bill@newbreedsoftware.com">bill@newbreedsoftware.com</a><br>
<a href="http://www.tuxpaint.org/">http://www.tuxpaint.org/</a></p>
<p>July 5, 2007 - August 23, 2007</p>
<p>July 5, 2007 - November 21, 2007</p>
</center>
<hr size=2 noshade>
@ -579,6 +579,12 @@ plugin's functions.
simulate location and distance of the 'Magic' tool effect.<br>
<br>
<li><code><b>void stopsound(void)</b></code><br>
This function stops playing a sound played by <code>playsound()</code>.
It is useful to silence effects when the user stops using the tool
(in your '<code>release</code>' function).
<br>
<li><a name="special_notify">
<code><b>void special_notify(int&nbsp;flag)</b></code>
</a><br>

View file

@ -23,7 +23,7 @@
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
(See COPYING.txt)
Last updated: November 6, 2007
Last updated: November 21, 2007
$Id$
*/
@ -141,6 +141,7 @@ void kalidescope_release(magic_api * api, int which,
SDL_Surface * canvas, SDL_Surface * last,
int x, int y, SDL_Rect * update_rect)
{
api->stopsound();
}
// No setup happened:

View file

@ -23,7 +23,7 @@
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
(See COPYING.txt)
Last updated: August 20, 2007
Last updated: November 21, 2007
$Id$
*/
@ -282,6 +282,7 @@ void shift_release(magic_api * api, int which,
int x, int y, SDL_Rect * update_rect)
{
shift_doit(api, which, canvas, last, x, y, x, y, update_rect, 0);
api->stopsound();
}

View file

@ -22,7 +22,7 @@
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
(See COPYING.txt)
June 14, 2002 - October 26, 2007
June 14, 2002 - November 21, 2007
$Id$
*/
@ -1501,6 +1501,7 @@ int magic_sort(const void * a, const void * b);
Mix_Chunk * magic_current_snd_ptr;
void magic_playsound(Mix_Chunk * snd, int left_right, int up_down);
void magic_stopsound(void);
void magic_line_func(void * mapi,
int which, SDL_Surface * canvas, SDL_Surface * last,
int x1, int y1, int x2, int y2, int step,
@ -16748,6 +16749,7 @@ void load_magic_plugins(void)
magic_api_struct[plc]->putpixel = putpixels[canvas->format->BytesPerPixel];
magic_api_struct[plc]->line = magic_line_func;
magic_api_struct[plc]->playsound = magic_playsound;
magic_api_struct[plc]->stopsound = magic_stopsound;
magic_api_struct[plc]->special_notify = special_notify;
magic_api_struct[plc]->button_down = magic_button_down;
magic_api_struct[plc]->rgbtohsv = rgbtohsv;
@ -17176,6 +17178,13 @@ void special_notify(int flags)
}
}
void magic_stopsound(void)
{
#ifndef NOSOUND
Mix_HaltChannel(0);
#endif
}
void magic_playsound(Mix_Chunk * snd, int left_right, int up_down)
{
#ifndef NOSOUND