Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYves 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)
commit5cc9d09c377ab090682cc8e8cb4db5311b4dd523 (patch)
tree318c0a8141c6a43a6903fd0269903707205bfb81
parentbb1c239b5e36f903becd5245b3217f20ee08934c (diff)
New sound policy to halt previous sound before play.
Test in memo sound.
-rw-r--r--ChangeLog11
-rw-r--r--po/Makefile.in.in182
-rw-r--r--src/boards/memory.c15
-rw-r--r--src/gcompris/soundutil.c17
-rw-r--r--src/gcompris/soundutil.h1
5 files changed, 110 insertions, 116 deletions
diff --git a/ChangeLog b/ChangeLog
index 265ccd4..14402db 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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 *);