diff options
author | Yves Combe <ycombe@src.gnome.org> | 2006-11-06 21:56:49 (GMT) |
---|---|---|
committer | Yves Combe <ycombe@src.gnome.org> | 2006-11-06 21:56:49 (GMT) |
commit | 5cc9d09c377ab090682cc8e8cb4db5311b4dd523 (patch) | |
tree | 318c0a8141c6a43a6903fd0269903707205bfb81 | |
parent | bb1c239b5e36f903becd5245b3217f20ee08934c (diff) |
New sound policy to halt previous sound before play.
Test in memo sound.
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | po/Makefile.in.in | 182 | ||||
-rw-r--r-- | src/boards/memory.c | 15 | ||||
-rw-r--r-- | src/gcompris/soundutil.c | 17 | ||||
-rw-r--r-- | src/gcompris/soundutil.h | 1 |
5 files changed, 110 insertions, 116 deletions
@@ -1,3 +1,14 @@ +2006-11-06 Yves Combe <yves@ycombe.net> + + New sound policy to halt previous sound before play. + Test in memo sound. + + * po/Makefile.in.in: + * src/boards/memory.c: (start_board), (end_board), (item_event): + * src/gcompris/soundutil.c: (gc_sound_policy_set), (free_string), + (gc_sound_play_ogg_list): + * src/gcompris/soundutil.h: + *** RELEASE 8.2 *** 2006-11-05 Bruno coudoin <bruno.coudoin@free.fr> diff --git a/po/Makefile.in.in b/po/Makefile.in.in index 1a6961e..d2d4e4c 100644 --- a/po/Makefile.in.in +++ b/po/Makefile.in.in @@ -22,7 +22,6 @@ PACKAGE = @PACKAGE@ VERSION = @VERSION@ SHELL = /bin/sh -@SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ @@ -34,18 +33,17 @@ exec_prefix = @exec_prefix@ datadir = @datadir@ datarootdir = @datarootdir@ libdir = @libdir@ -localedir = $(libdir)/locale -gnulocaledir = $(datadir)/locale -gettextsrcdir = $(datadir)/glib-2.0/gettext/po +DATADIRNAME = @DATADIRNAME@ +itlocaledir = $(prefix)/$(DATADIRNAME)/locale subdir = po install_sh = @install_sh@ -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +# Automake >= 1.8 provides @mkdir_p@. +# Until it can be supposed, use the safe fallback: +mkdir_p = $(install_sh) -d INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ -CC = @CC@ -GENCAT = @GENCAT@ GMSGFMT = @GMSGFMT@ MSGFMT = @MSGFMT@ XGETTEXT = @XGETTEXT@ @@ -54,32 +52,22 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ MSGMERGE = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --dist GENPOT = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --pot -DEFS = @DEFS@ -CFLAGS = @CFLAGS@ -CPPFLAGS = @CPPFLAGS@ +ALL_LINGUAS = @ALL_LINGUAS@ -INCLUDES = -I.. -I$(top_srcdir)/intl +PO_LINGUAS=$(shell if test -r $(srcdir)/LINGUAS; then grep -v "^\#" $(srcdir)/LINGUAS; fi) -COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) +POFILES=$(shell if test -n "$(PO_LINGUAS)"; then LINGUAS="$(PO_LINGUAS)"; else LINGUAS="$(ALL_LINGUAS)"; fi; for lang in $$LINGUAS; do printf "$$lang.po "; done) -SOURCES = -POFILES = @POFILES@ -GMOFILES = @GMOFILES@ -DISTFILES = ChangeLog Makefile.in.in POTFILES.in \ -$(POFILES) $(SOURCES) +DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(POFILES) EXTRA_DISTFILES = POTFILES.skip Makevars LINGUAS POTFILES = \ +#This Gets Replace for some reason -CATALOGS = @CATALOGS@ -CATOBJEXT = @CATOBJEXT@ -INSTOBJEXT = @INSTOBJEXT@ +CATALOGS=$(shell if test -n "$(PO_LINGUAS)"; then LINGUAS="$(PO_LINGUAS)"; else LINGUAS="$(ALL_LINGUAS)"; fi; for lang in $$LINGUAS; do printf "$$lang.gmo "; done) .SUFFIXES: -.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat - -.c.o: - $(COMPILE) $< +.SUFFIXES: .po .pox .gmo .mo .msg .cat .po.pox: $(MAKE) $(GETTEXT_PACKAGE).pot @@ -94,7 +82,7 @@ INSTOBJEXT = @INSTOBJEXT@ .po.cat: sed -f ../intl/po2msg.sed < $< > $*.msg \ - && rm -f $@ && $(GENCAT) $@ $*.msg + && rm -f $@ && gencat $@ $*.msg all: all-@USE_NLS@ @@ -105,120 +93,98 @@ all-no: $(GETTEXT_PACKAGE).pot: $(POTFILES) $(GENPOT) -install: install-exec install-data -install-exec: +install: install-data install-data: install-data-@USE_NLS@ install-data-no: all install-data-yes: all - if test -n "$(MKINSTALLDIRS)"; then \ - $(MKINSTALLDIRS) $(DESTDIR)$(datadir); \ + $(mkdir_p) $(DESTDIR)$(itlocaledir) + if test -n "$(PO_LINGUAS)"; then \ + linguas="$(PO_LINGUAS)"; \ else \ - $(SHELL) $(top_srcdir)/mkinstalldirs $(DESTDIR)$(datadir); \ - fi - @catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - case "$$cat" in \ - *.gmo) destdir=$(gnulocaledir);; \ - *) destdir=$(localedir);; \ - esac; \ - lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ - dir=$(DESTDIR)$$destdir/$$lang/LC_MESSAGES; \ - if test -n "$(MKINSTALLDIRS)"; then \ - $(MKINSTALLDIRS) $$dir; \ + linguas="$(ALL_LINGUAS)"; \ + fi; \ + for lang in $$linguas; do \ + dir=$(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES; \ + $(mkdir_p) $$dir; \ + if test -r $$lang.gmo; then \ + $(INSTALL_DATA) $$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \ + echo "installing $$lang.gmo as $$dir/$(GETTEXT_PACKAGE).mo"; \ else \ - $(SHELL) $(top_srcdir)/mkinstalldirs $$dir; \ + $(INSTALL_DATA) $(srcdir)/$$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \ + echo "installing $(srcdir)/$$lang.gmo as" \ + "$$dir/$(GETTEXT_PACKAGE).mo"; \ fi; \ - if test -r $$cat; then \ - $(INSTALL_DATA) $$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \ - echo "installing $$cat as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \ + if test -r $$lang.gmo.m; then \ + $(INSTALL_DATA) $$lang.gmo.m $$dir/$(GETTEXT_PACKAGE).mo.m; \ + echo "installing $$lang.gmo.m as $$dir/$(GETTEXT_PACKAGE).mo.m"; \ else \ - $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \ - echo "installing $(srcdir)/$$cat as" \ - "$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \ - fi; \ - if test -r $$cat.m; then \ - $(INSTALL_DATA) $$cat.m $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \ - echo "installing $$cat.m as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m"; \ - else \ - if test -r $(srcdir)/$$cat.m ; then \ - $(INSTALL_DATA) $(srcdir)/$$cat.m \ - $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \ - echo "installing $(srcdir)/$$cat as" \ - "$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m"; \ + if test -r $(srcdir)/$$lang.gmo.m ; then \ + $(INSTALL_DATA) $(srcdir)/$$lang.gmo.m \ + $$dir/$(GETTEXT_PACKAGE).mo.m; \ + echo "installing $(srcdir)/$$lang.gmo.m as" \ + "$$dir/$(GETTEXT_PACKAGE).mo.m"; \ else \ true; \ fi; \ fi; \ done - if test "$(PACKAGE)" = "glib"; then \ - if test -n "$(MKINSTALLDIRS)"; then \ - $(MKINSTALLDIRS) $(DESTDIR)$(gettextsrcdir); \ - else \ - $(SHELL) $(top_srcdir)/mkinstalldirs $(DESTDIR)$(gettextsrcdir); \ - fi; \ - $(INSTALL_DATA) $(srcdir)/Makefile.in.in \ - $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \ - else \ - : ; \ - fi + +# Empty stubs to satisfy archaic automake needs +dvi info tags TAGS ID: # Define this as empty until I found a useful application. installcheck: uninstall: - catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ - rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \ - rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \ - rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \ - rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \ + if test -n "$(PO_LINGUAS)"; then \ + linguas="$(PO_LINGUAS)"; \ + else \ + linguas="$(ALL_LINGUAS)"; \ + fi; \ + for lang in $$linguas; do \ + rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo; \ + rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo.m; \ done - if test "$(PACKAGE)" = "glib"; then \ - rm -f $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \ - fi check: all $(GETTEXT_PACKAGE).pot -dvi info tags TAGS ID: - mostlyclean: - rm -f core core.* *.pox $(GETTEXT_PACKAGE).pot *.old.po cat-id-tbl.tmp - rm -fr *.o + rm -f *.pox $(GETTEXT_PACKAGE).pot *.old.po cat-id-tbl.tmp rm -f .intltool-merge-cache clean: mostlyclean distclean: clean - rm -f Makefile Makefile.in POTFILES - rm -f *.mo *.msg *.cat *.cat.m $(GMOFILES) + rm -f Makefile Makefile.in POTFILES stamp-it + rm -f *.mo *.msg *.cat *.cat.m *.gmo maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." rm -f Makefile.in.in -distdir = ../$(GETTEXT_PACKAGE)-$(VERSION)/$(subdir) +distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) dist distdir: $(DISTFILES) dists="$(DISTFILES)"; \ extra_dists="$(EXTRA_DISTFILES)"; \ for file in $$extra_dists; do \ - test -f $$file && dists="$$dists $$file"; \ + test -f $(srcdir)/$$file && dists="$$dists $(srcdir)/$$file"; \ done; \ for file in $$dists; do \ - ln $(srcdir)/$$file $(distdir) 2> /dev/null \ - || cp -p $(srcdir)/$$file $(distdir); \ + test -f $$file || file="$(srcdir)/$$file"; \ + ln $$file $(distdir) 2> /dev/null \ + || cp -p $$file $(distdir); \ done update-po: Makefile $(MAKE) $(GETTEXT_PACKAGE).pot tmpdir=`pwd`; \ - catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ + if test -n "$(PO_LINGUAS)"; then \ + linguas="$(PO_LINGUAS)"; \ + else \ + linguas="$(ALL_LINGUAS)"; \ + fi; \ + for lang in $$linguas; do \ echo "$$lang:"; \ result="`$(MSGMERGE) -o $$tmpdir/$$lang.new.po $$lang`"; \ if $$result; then \ @@ -234,28 +200,20 @@ update-po: Makefile fi; \ fi; \ else \ - echo "msgmerge for $$cat failed!"; \ + echo "msgmerge for $$lang.gmo failed!"; \ rm -f $$tmpdir/$$lang.new.po; \ fi; \ done -# POTFILES is created from POTFILES.in by stripping comments, empty lines -# and Intltool tags (enclosed in square brackets), and appending a full -# relative path to them -POTFILES: POTFILES.in - ( posrcprefix='$(top_srcdir)/'; \ - rm -f $@-t $@ \ - && (sed -e '/^#/d' \ - -e 's/^[[].*] *//' \ - -e '/^[ ]*$$/d' \ - -e "s@^@ $$posrcprefix@" $(srcdir)/$@.in \ - | sed -e '$$!s/$$/ \\/') > $@-t \ - && chmod a-w $@-t \ - && mv $@-t $@ ) - -Makefile: Makefile.in.in ../config.status POTFILES +Makefile POTFILES: stamp-it + @if test ! -f $@; then \ + rm -f stamp-it; \ + $(MAKE) stamp-it; \ + fi + +stamp-it: Makefile.in.in ../config.status POTFILES.in cd .. \ - && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ + && CONFIG_FILES=$(subdir)/Makefile.in CONFIG_HEADERS= CONFIG_LINKS= \ $(SHELL) ./config.status # Tell versions [3.59,3.63) of GNU make not to export all variables. diff --git a/src/boards/memory.c b/src/boards/memory.c index 6eaf359..e78ca3f 100644 --- a/src/boards/memory.c +++ b/src/boards/memory.c @@ -276,8 +276,7 @@ static gchar *soundList[] = #define NUMBER_OF_SOUNDS G_N_ELEMENTS(soundList) - - +static SoundPolicy sound_policy; /* Description of this plugin */ static BoardPlugin menu_bp = @@ -816,6 +815,12 @@ static void start_board (GcomprisBoard *agcomprisBoard) GcomprisProperties *properties = gc_prop_get(); gc_sound_pause(); + + /* initial state to restore */ + sound_policy = gc_sound_policy_get(); + + gc_sound_policy_set(PLAY_AND_INTERRUPT); + gc_set_background(gnome_canvas_root(gcomprisBoard->canvas), "images/gcompris_band.png"); base_x1 = BASE_SOUND_X1; base_y1 = BASE_SOUND_Y1; @@ -897,8 +902,10 @@ static void start_board (GcomprisBoard *agcomprisBoard) static void end_board () { - if (currentUiMode == UIMODE_SOUND) + if (currentUiMode == UIMODE_SOUND) { + gc_sound_policy_set(sound_policy); gc_sound_resume(); + } if(gcomprisBoard!=NULL) { @@ -1576,7 +1583,7 @@ item_event(GnomeCanvasItem *item, GdkEvent *event, MemoryItem *memoryItem) if (playing_sound){ g_warning("wait a minute, the sound is playing !"); - return FALSE; + //return FALSE; } if(win_id) diff --git a/src/gcompris/soundutil.c b/src/gcompris/soundutil.c index 63807eb..5698f76 100644 --- a/src/gcompris/soundutil.c +++ b/src/gcompris/soundutil.c @@ -159,6 +159,7 @@ gc_sound_policy_set(int policy) { case PLAY_ONLY_IF_IDLE : sound_policy = PLAY_ONLY_IF_IDLE; break; case PLAY_AFTER_CURRENT : sound_policy = PLAY_AFTER_CURRENT; break; + case PLAY_AND_INTERRUPT : sound_policy = PLAY_AND_INTERRUPT; break; default : sound_policy = PLAY_AFTER_CURRENT; } } @@ -393,10 +394,15 @@ gc_sound_play_ogg(const gchar *sound, ...) * If it doesn't exists, then the test is done with a music file: * music/<sound> =====================================================================*/ +void free_string(gpointer data, gpointer user_data) +{ + g_free(data); +} void gc_sound_play_ogg_list( GList* files ) { GList* list; + char* tmpSound = NULL; if ( !gc_prop_get()->fx ) return; @@ -405,6 +411,17 @@ gc_sound_play_ogg_list( GList* files ) g_list_length( pending_queue ) > 0 ) return; + if ( sound_policy == PLAY_AND_INTERRUPT ) { + g_warning("halt music"); + while ( g_list_length(pending_queue) > 0 ) + { + tmpSound = g_list_nth_data( pending_queue, 0 ); + pending_queue = g_list_remove( pending_queue, tmpSound ); + g_free(tmpSound); + } + sdlplayer_halt_fx(); + } + g_mutex_lock (lock); list = g_list_first( files ); diff --git a/src/gcompris/soundutil.h b/src/gcompris/soundutil.h index 852fcbd..13a5c89 100644 --- a/src/gcompris/soundutil.h +++ b/src/gcompris/soundutil.h @@ -31,6 +31,7 @@ typedef enum { PLAY_ONLY_IF_IDLE = 0, PLAY_AFTER_CURRENT = 1, + PLAY_AND_INTERRUPT = 2, } SoundPolicy; typedef void (*GcomprisSoundCallback) (gchar *); |