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 bill@newbreedsoftware.com
http://www.tuxpaint.org/ 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 The 'pan' and 'dist' values can be used to simulate location and
distance of the 'Magic' tool effect. 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) * void special_notify(int flag)
This function notifies Tux Paint of special events. Various This function notifies Tux Paint of special events. Various
values defined in "tp_magic_api.h" can be 'or'ed together (using 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> <p><a href="mailto:bill@newbreedsoftware.com">bill@newbreedsoftware.com</a><br>
<a href="http://www.tuxpaint.org/">http://www.tuxpaint.org/</a></p> <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> </center>
<hr size=2 noshade> <hr size=2 noshade>
@ -579,6 +579,12 @@ plugin's functions.
simulate location and distance of the 'Magic' tool effect.<br> simulate location and distance of the 'Magic' tool effect.<br>
<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"> <li><a name="special_notify">
<code><b>void special_notify(int&nbsp;flag)</b></code> <code><b>void special_notify(int&nbsp;flag)</b></code>
</a><br> </a><br>

View file

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

View file

@ -23,7 +23,7 @@
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
(See COPYING.txt) (See COPYING.txt)
Last updated: August 20, 2007 Last updated: November 21, 2007
$Id$ $Id$
*/ */
@ -282,6 +282,7 @@ void shift_release(magic_api * api, int which,
int x, int y, SDL_Rect * update_rect) int x, int y, SDL_Rect * update_rect)
{ {
shift_doit(api, which, canvas, last, x, y, x, y, update_rect, 0); 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 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
(See COPYING.txt) (See COPYING.txt)
June 14, 2002 - October 26, 2007 June 14, 2002 - November 21, 2007
$Id$ $Id$
*/ */
@ -1501,6 +1501,7 @@ int magic_sort(const void * a, const void * b);
Mix_Chunk * magic_current_snd_ptr; Mix_Chunk * magic_current_snd_ptr;
void magic_playsound(Mix_Chunk * snd, int left_right, int up_down); void magic_playsound(Mix_Chunk * snd, int left_right, int up_down);
void magic_stopsound(void);
void magic_line_func(void * mapi, void magic_line_func(void * mapi,
int which, SDL_Surface * canvas, SDL_Surface * last, int which, SDL_Surface * canvas, SDL_Surface * last,
int x1, int y1, int x2, int y2, int step, 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]->putpixel = putpixels[canvas->format->BytesPerPixel];
magic_api_struct[plc]->line = magic_line_func; magic_api_struct[plc]->line = magic_line_func;
magic_api_struct[plc]->playsound = magic_playsound; 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]->special_notify = special_notify;
magic_api_struct[plc]->button_down = magic_button_down; magic_api_struct[plc]->button_down = magic_button_down;
magic_api_struct[plc]->rgbtohsv = rgbtohsv; 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) void magic_playsound(Mix_Chunk * snd, int left_right, int up_down)
{ {
#ifndef NOSOUND #ifndef NOSOUND