[SCM] gecko-mediaplayer/upstream: Imported Upstream version 1.0.7
sramacher at users.alioth.debian.org
sramacher at users.alioth.debian.org
Fri Nov 16 18:59:54 UTC 2012
The following commit has been merged in the upstream branch:
commit bbf42b64939c38aa37bb641ef7a425b80b212cf1
Author: Sebastian Ramacher <sramacher at debian.org>
Date: Fri Nov 16 19:15:06 2012 +0100
Imported Upstream version 1.0.7
diff --git a/ChangeLog b/ChangeLog
index 537d7b3..870d65a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,20 @@
Development
- Updated Portuguese translation
- Updated Japanese translation
+1.0.7b
+1.0.7a1
+ Version bump to 1.0.7a1
+ Very Large Change
+ rework the processing of playlists so that items are downloaded
+ one at a time and only as needed
+ Convert NPRES and NPERR codes to text in messages
+ ASX and M3U files should be properly parsed and not streamed in all cases
+ Add ASX to the list of types that should be streamed, and fix the code so that it is case insensitive
+ Switch plugin to streaming mode with #EXTM3U is found in the file
+ Clean up some depreciated symbol warnings
+ Convert plugin_list to use gm_log
+ Convert the majority of the code to use gm_log instead of printf
+1.0.6
+ Updated Portuguese translation
+ Updated Japanese translation
1.0.6b1
Fix a problem in the style parser, was looking at a null pointer
Added WMP plugin properties enabled and enableContextMenu
diff --git a/Makefile.in b/Makefile.in
index 15e7e8d..57012a0 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,9 +1,9 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -16,6 +16,23 @@
@SET_MAKE@
VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@@ -48,11 +65,11 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = config.h
CONFIG_CLEAN_FILES = gecko-mediaplayer.spec
CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
am__v_at_0 = @
SOURCES =
DIST_SOURCES =
@@ -63,6 +80,11 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
install-pdf-recursive install-ps-recursive install-recursive \
installcheck-recursive installdirs-recursive pdf-recursive \
ps-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
@@ -84,6 +106,12 @@ am__nobase_list = $(am__nobase_strip_setup); \
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
am__installdirs = "$(DESTDIR)$(gecko_mediaplayerdocdir)" \
"$(DESTDIR)$(schemadir)"
DATA = $(gecko_mediaplayerdoc_DATA) $(schema_DATA)
@@ -99,9 +127,11 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \
- { test ! -d "$(distdir)" \
- || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
- && rm -fr "$(distdir)"; }; }
+ if test -d "$(distdir)"; then \
+ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -rf "$(distdir)" \
+ || { sleep 5 && rm -rf "$(distdir)"; }; \
+ else :; fi
am__relativize = \
dir0=`pwd`; \
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
@@ -130,6 +160,8 @@ am__relativize = \
DIST_ARCHIVES = $(distdir).tar.gz
GZIP_ENV = --best
distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
distcleancheck_listfiles = find . -type f -print
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
@@ -281,7 +313,7 @@ all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
.SUFFIXES:
-am--refresh:
+am--refresh: Makefile
@:
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
@@ -317,10 +349,8 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
$(am__aclocal_m4_deps):
config.h: stamp-h1
- @if test ! -f $@; then \
- rm -f stamp-h1; \
- $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
- else :; fi
+ @if test ! -f $@; then rm -f stamp-h1; else :; fi
+ @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
@rm -f stamp-h1
@@ -336,8 +366,11 @@ gecko-mediaplayer.spec: $(top_builddir)/config.status $(srcdir)/gecko-mediaplaye
cd $(top_builddir) && $(SHELL) ./config.status $@
install-gecko_mediaplayerdocDATA: $(gecko_mediaplayerdoc_DATA)
@$(NORMAL_INSTALL)
- test -z "$(gecko_mediaplayerdocdir)" || $(MKDIR_P) "$(DESTDIR)$(gecko_mediaplayerdocdir)"
@list='$(gecko_mediaplayerdoc_DATA)'; test -n "$(gecko_mediaplayerdocdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(gecko_mediaplayerdocdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(gecko_mediaplayerdocdir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
@@ -351,13 +384,14 @@ uninstall-gecko_mediaplayerdocDATA:
@$(NORMAL_UNINSTALL)
@list='$(gecko_mediaplayerdoc_DATA)'; test -n "$(gecko_mediaplayerdocdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(gecko_mediaplayerdocdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(gecko_mediaplayerdocdir)" && rm -f $$files
+ dir='$(DESTDIR)$(gecko_mediaplayerdocdir)'; $(am__uninstall_files_from_dir)
install-schemaDATA: $(schema_DATA)
@$(NORMAL_INSTALL)
- test -z "$(schemadir)" || $(MKDIR_P) "$(DESTDIR)$(schemadir)"
@list='$(schema_DATA)'; test -n "$(schemadir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(schemadir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(schemadir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
@@ -371,9 +405,7 @@ uninstall-schemaDATA:
@$(NORMAL_UNINSTALL)
@list='$(schema_DATA)'; test -n "$(schemadir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(schemadir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(schemadir)" && rm -f $$files
+ dir='$(DESTDIR)$(schemadir)'; $(am__uninstall_files_from_dir)
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
@@ -544,13 +576,10 @@ distdir: $(DISTFILES)
done
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
- test -d "$(distdir)/$$subdir" \
- || $(MKDIR_P) "$(distdir)/$$subdir" \
- || exit 1; \
- fi; \
- done
- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
$(am__relativize); \
new_distdir=$$reldir; \
@@ -585,7 +614,11 @@ dist-gzip: distdir
$(am__remove_distdir)
dist-bzip2: distdir
- tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+ tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+ $(am__remove_distdir)
+
+dist-lzip: distdir
+ tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
$(am__remove_distdir)
dist-lzma: distdir
@@ -593,7 +626,7 @@ dist-lzma: distdir
$(am__remove_distdir)
dist-xz: distdir
- tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
+ tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
$(am__remove_distdir)
dist-tarZ: distdir
@@ -624,6 +657,8 @@ distcheck: dist
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.lzma*) \
lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+ *.tar.lz*) \
+ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
*.tar.xz*) \
xz -dc $(distdir).tar.xz | $(am__untar) ;;\
*.tar.Z*) \
@@ -633,7 +668,7 @@ distcheck: dist
*.zip*) \
unzip $(distdir).zip ;;\
esac
- chmod -R a-w $(distdir); chmod a+w $(distdir)
+ chmod -R a-w $(distdir); chmod u+w $(distdir)
mkdir $(distdir)/_build
mkdir $(distdir)/_inst
chmod a-w $(distdir)
@@ -643,6 +678,7 @@ distcheck: dist
&& am__cwd=`pwd` \
&& $(am__cd) $(distdir)/_build \
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
+ $(AM_DISTCHECK_CONFIGURE_FLAGS) \
$(DISTCHECK_CONFIGURE_FLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
@@ -671,8 +707,16 @@ distcheck: dist
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
distuninstallcheck:
- @$(am__cd) '$(distuninstallcheck_dir)' \
- && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+ @test -n '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: trying to run $@ with an empty' \
+ '$$(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ $(am__cd) '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
|| { echo "ERROR: files left after uninstall:" ; \
if test -n "$(DESTDIR)"; then \
echo " (check DESTDIR support)"; \
@@ -706,10 +750,15 @@ install-am: all-am
installcheck: installcheck-recursive
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
@@ -798,8 +847,8 @@ uninstall-am: uninstall-gecko_mediaplayerdocDATA uninstall-schemaDATA
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
all all-am am--refresh check check-am clean clean-generic \
ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
- dist-hook dist-lzma dist-shar dist-tarZ dist-xz dist-zip \
- distcheck distclean distclean-generic distclean-hdr \
+ dist-hook dist-lzip dist-lzma dist-shar dist-tarZ dist-xz \
+ dist-zip distcheck distclean distclean-generic distclean-hdr \
distclean-tags distcleancheck distdir distuninstallcheck dvi \
dvi-am html html-am info info-am install install-am \
install-data install-data-am install-data-hook install-dvi \
diff --git a/aclocal.m4 b/aclocal.m4
index a90f773..0315809 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,7 +1,8 @@
-# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.11.6 -*- Autoconf -*-
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation,
+# Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -659,12 +660,15 @@ else
fi[]dnl
])# PKG_CHECK_MODULES
-# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software
+# Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
+# serial 1
+
# AM_AUTOMAKE_VERSION(VERSION)
# ----------------------------
# Automake X.Y traces this macro to ensure aclocal.m4 has been
@@ -674,7 +678,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION],
[am__api_version='1.11'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.11.1], [],
+m4_if([$1], [1.11.6], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
@@ -690,19 +694,21 @@ m4_define([_AM_AUTOCONF_VERSION], [])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.11.1])dnl
+[AM_AUTOMAKE_VERSION([1.11.6])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
+# serial 1
+
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
@@ -807,14 +813,14 @@ AC_CONFIG_COMMANDS_PRE(
Usually this means the macro was only invoked conditionally.]])
fi])])
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
-# Free Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009,
+# 2010, 2011 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 10
+# serial 12
# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
# written in clear, in which case automake, when reading aclocal.m4,
@@ -854,6 +860,7 @@ AC_CACHE_CHECK([dependency style of $depcc],
# instance it was reported that on HP-UX the gcc test will end up
# making a dummy file named `D' -- because `-MD' means `put the output
# in D'.
+ rm -rf conftest.dir
mkdir conftest.dir
# Copy depcomp to subdir because otherwise we won't find it if we're
# using a relative directory.
@@ -918,7 +925,7 @@ AC_CACHE_CHECK([dependency style of $depcc],
break
fi
;;
- msvisualcpp | msvcmsys)
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
# This compiler won't grok `-c -o', but also, the minuso test has
# not run yet. These depmodes are late enough in the game, and
# so weak that their functioning should not be impacted.
@@ -983,10 +990,13 @@ AC_DEFUN([AM_DEP_TRACK],
if test "x$enable_dependency_tracking" != xno; then
am_depcomp="$ac_aux_dir/depcomp"
AMDEPBACKSLASH='\'
+ am__nodep='_no'
fi
AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
AC_SUBST([AMDEPBACKSLASH])dnl
_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
])
# Generate code to set up dependency tracking. -*- Autoconf -*-
@@ -1220,12 +1230,15 @@ for _am_header in $config_headers :; do
done
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation,
+# Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
+# serial 1
+
# AM_PROG_INSTALL_SH
# ------------------
# Define $install_sh.
@@ -1265,8 +1278,8 @@ AC_SUBST([am__leading_dot])])
# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
# From Jim Meyering
-# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008,
+# 2011 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1286,7 +1299,7 @@ AC_DEFUN([AM_MAINTAINER_MODE],
[disable], [m4_define([am_maintainer_other], [enable])],
[m4_define([am_maintainer_other], [enable])
m4_warn([syntax], [unexpected argument to AM@&t at _MAINTAINER_MODE: $1])])
-AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of Makefiles])
+AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
dnl maintainer-mode's default is 'disable' unless 'enable' is passed
AC_ARG_ENABLE([maintainer-mode],
[ --][am_maintainer_other][-maintainer-mode am_maintainer_other make rules and dependencies not useful
@@ -1432,12 +1445,15 @@ else
fi
])
-# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation,
+# Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
+# serial 1
+
# AM_PROG_MKDIR_P
# ---------------
# Check for `mkdir -p'.
@@ -1460,13 +1476,14 @@ esac
# Helper functions for option handling. -*- Autoconf -*-
-# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software
+# Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 4
+# serial 5
# _AM_MANGLE_OPTION(NAME)
# -----------------------
@@ -1474,13 +1491,13 @@ AC_DEFUN([_AM_MANGLE_OPTION],
[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
# _AM_SET_OPTION(NAME)
-# ------------------------------
+# --------------------
# Set option NAME. Presently that only means defining a flag for this option.
AC_DEFUN([_AM_SET_OPTION],
[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
# _AM_SET_OPTIONS(OPTIONS)
-# ----------------------------------
+# ------------------------
# OPTIONS is a space-separated list of Automake options.
AC_DEFUN([_AM_SET_OPTIONS],
[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
@@ -1556,13 +1573,13 @@ Check your system clock])
fi
AC_MSG_RESULT(yes)])
-# Copyright (C) 2009 Free Software Foundation, Inc.
+# Copyright (C) 2009, 2011 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 1
+# serial 2
# AM_SILENT_RULES([DEFAULT])
# --------------------------
@@ -1577,18 +1594,50 @@ yes) AM_DEFAULT_VERBOSITY=0;;
no) AM_DEFAULT_VERBOSITY=1;;
*) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
esac
+dnl
+dnl A few `make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+ [am_cv_make_support_nested_variables],
+ [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+ @$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+ am_cv_make_support_nested_variables=yes
+else
+ am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+ dnl Using `$V' instead of `$(V)' breaks IRIX make.
+ AM_V='$(V)'
+ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+ AM_V=$AM_DEFAULT_VERBOSITY
+ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
AM_BACKSLASH='\'
AC_SUBST([AM_BACKSLASH])dnl
_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
])
-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
+# serial 1
+
# AM_PROG_INSTALL_STRIP
# ---------------------
# One issue with vendor `install' (even GNU) is that you can't
@@ -1611,13 +1660,13 @@ fi
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])])
-# Copyright (C) 2006, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 2
+# serial 3
# _AM_SUBST_NOTMAKE(VARIABLE)
# ---------------------------
@@ -1626,13 +1675,13 @@ AC_SUBST([INSTALL_STRIP_PROGRAM])])
AC_DEFUN([_AM_SUBST_NOTMAKE])
# AM_SUBST_NOTMAKE(VARIABLE)
-# ---------------------------
+# --------------------------
# Public sister of _AM_SUBST_NOTMAKE.
AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# Check how to create a tarball. -*- Autoconf -*-
-# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1654,10 +1703,11 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# a tarball read from stdin.
# $(am__untar) < result.tar
AC_DEFUN([_AM_PROG_TAR],
-[# Always define AMTAR for backward compatibility.
-AM_MISSING_PROG([AMTAR], [tar])
+[# Always define AMTAR for backward compatibility. Yes, it's still used
+# in the wild :-( We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
m4_if([$1], [v7],
- [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+ [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
[m4_case([$1], [ustar],, [pax],,
[m4_fatal([Unknown tar format])])
AC_MSG_CHECKING([how to create a $1 tar archive])
diff --git a/config.h b/config.h
index b8a6034..05ad2f9 100644
--- a/config.h
+++ b/config.h
@@ -89,4 +89,4 @@
#define STDC_HEADERS 1
/* Version number of package */
-#define VERSION "1.0.6"
+#define VERSION "1.0.7"
diff --git a/configure b/configure
index af0efce..9771714 100755
--- a/configure
+++ b/configure
@@ -657,6 +657,7 @@ CPP
am__fastdepCC_FALSE
am__fastdepCC_TRUE
CCDEPMODE
+am__nodep
AMDEPBACKSLASH
AMDEP_FALSE
AMDEP_TRUE
@@ -672,6 +673,8 @@ CFLAGS
CC
AM_BACKSLASH
AM_DEFAULT_VERBOSITY
+AM_DEFAULT_V
+AM_V
MAINT
MAINTAINER_MODE_FALSE
MAINTAINER_MODE_TRUE
@@ -2729,7 +2732,7 @@ fi
# Define the identity of the package.
PACKAGE=gecko-mediaplayer
- VERSION=1.0.6
+ VERSION=1.0.7
cat >>confdefs.h <<_ACEOF
@@ -2759,11 +2762,11 @@ MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
# We need awk for the "check" target. The system "awk" is bad on
# some platforms.
-# Always define AMTAR for backward compatibility.
+# Always define AMTAR for backward compatibility. Yes, it's still used
+# in the wild :-( We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
-AMTAR=${AMTAR-"${am_missing_run}tar"}
-
-am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
@@ -2772,8 +2775,8 @@ am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
ac_config_headers="$ac_config_headers config.h"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to disable maintainer-specific portions of Makefiles" >&5
-$as_echo_n "checking whether to disable maintainer-specific portions of Makefiles... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
# Check whether --enable-maintainer-mode was given.
if test "${enable_maintainer_mode+set}" = set; then :
enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
@@ -2804,6 +2807,33 @@ yes) AM_DEFAULT_VERBOSITY=0;;
no) AM_DEFAULT_VERBOSITY=1;;
*) AM_DEFAULT_VERBOSITY=0;;
esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+ @$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+ am_cv_make_support_nested_variables=yes
+else
+ am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+ AM_V='$(V)'
+ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+ AM_V=$AM_DEFAULT_VERBOSITY
+ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
AM_BACKSLASH='\'
@@ -2859,6 +2889,7 @@ fi
if test "x$enable_dependency_tracking" != xno; then
am_depcomp="$ac_aux_dir/depcomp"
AMDEPBACKSLASH='\'
+ am__nodep='_no'
fi
if test "x$enable_dependency_tracking" != xno; then
AMDEP_TRUE=
@@ -3672,6 +3703,7 @@ else
# instance it was reported that on HP-UX the gcc test will end up
# making a dummy file named `D' -- because `-MD' means `put the output
# in D'.
+ rm -rf conftest.dir
mkdir conftest.dir
# Copy depcomp to subdir because otherwise we won't find it if we're
# using a relative directory.
@@ -3731,7 +3763,7 @@ else
break
fi
;;
- msvisualcpp | msvcmsys)
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
# This compiler won't grok `-c -o', but also, the minuso test has
# not run yet. These depmodes are late enough in the game, and
# so weak that their functioning should not be impacted.
@@ -4396,6 +4428,7 @@ else
# instance it was reported that on HP-UX the gcc test will end up
# making a dummy file named `D' -- because `-MD' means `put the output
# in D'.
+ rm -rf conftest.dir
mkdir conftest.dir
# Copy depcomp to subdir because otherwise we won't find it if we're
# using a relative directory.
@@ -4455,7 +4488,7 @@ else
break
fi
;;
- msvisualcpp | msvcmsys)
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
# This compiler won't grok `-c -o', but also, the minuso test has
# not run yet. These depmodes are late enough in the game, and
# so weak that their functioning should not be impacted.
@@ -5063,6 +5096,7 @@ else
# instance it was reported that on HP-UX the gcc test will end up
# making a dummy file named `D' -- because `-MD' means `put the output
# in D'.
+ rm -rf conftest.dir
mkdir conftest.dir
# Copy depcomp to subdir because otherwise we won't find it if we're
# using a relative directory.
@@ -5122,7 +5156,7 @@ else
break
fi
;;
- msvisualcpp | msvcmsys)
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
# This compiler won't grok `-c -o', but also, the minuso test has
# not run yet. These depmodes are late enough in the game, and
# so weak that their functioning should not be impacted.
@@ -5969,6 +6003,7 @@ else
# instance it was reported that on HP-UX the gcc test will end up
# making a dummy file named `D' -- because `-MD' means `put the output
# in D'.
+ rm -rf conftest.dir
mkdir conftest.dir
# Copy depcomp to subdir because otherwise we won't find it if we're
# using a relative directory.
@@ -6028,7 +6063,7 @@ else
break
fi
;;
- msvisualcpp | msvcmsys)
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
# This compiler won't grok `-c -o', but also, the minuso test has
# not run yet. These depmodes are late enough in the game, and
# so weak that their functioning should not be impacted.
@@ -7259,12 +7294,12 @@ if test -n "$GMLIB_CFLAGS"; then
pkg_cv_GMLIB_CFLAGS="$GMLIB_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gmlib >= 1.0.5\""; } >&5
- ($PKG_CONFIG --exists --print-errors "gmlib >= 1.0.5") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gmlib >= 1.0.7\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "gmlib >= 1.0.7") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_GMLIB_CFLAGS=`$PKG_CONFIG --cflags "gmlib >= 1.0.5" 2>/dev/null`
+ pkg_cv_GMLIB_CFLAGS=`$PKG_CONFIG --cflags "gmlib >= 1.0.7" 2>/dev/null`
else
pkg_failed=yes
fi
@@ -7275,12 +7310,12 @@ if test -n "$GMLIB_LIBS"; then
pkg_cv_GMLIB_LIBS="$GMLIB_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gmlib >= 1.0.5\""; } >&5
- ($PKG_CONFIG --exists --print-errors "gmlib >= 1.0.5") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gmlib >= 1.0.7\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "gmlib >= 1.0.7") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_GMLIB_LIBS=`$PKG_CONFIG --libs "gmlib >= 1.0.5" 2>/dev/null`
+ pkg_cv_GMLIB_LIBS=`$PKG_CONFIG --libs "gmlib >= 1.0.7" 2>/dev/null`
else
pkg_failed=yes
fi
@@ -7300,14 +7335,14 @@ else
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
- GMLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gmlib >= 1.0.5" 2>&1`
+ GMLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gmlib >= 1.0.7" 2>&1`
else
- GMLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors "gmlib >= 1.0.5" 2>&1`
+ GMLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors "gmlib >= 1.0.7" 2>&1`
fi
# Put the nasty error message in config.log where it belongs
echo "$GMLIB_PKG_ERRORS" >&5
- as_fn_error $? "Package requirements (gmlib >= 1.0.5) were not met:
+ as_fn_error $? "Package requirements (gmlib >= 1.0.7) were not met:
$GMLIB_PKG_ERRORS
@@ -7871,13 +7906,13 @@ fi
# Put the nasty error message in config.log where it belongs
echo "$GECKO_PKG_ERRORS" >&5
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: seamokey-plugin not found, trying another" >&5
-$as_echo "$as_me: WARNING: seamokey-plugin not found, trying another" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: seamonkey-plugin not found, trying another" >&5
+$as_echo "$as_me: WARNING: seamonkey-plugin not found, trying another" >&2;}
elif test $pkg_failed = untried; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: seamokey-plugin not found, trying another" >&5
-$as_echo "$as_me: WARNING: seamokey-plugin not found, trying another" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: seamonkey-plugin not found, trying another" >&5
+$as_echo "$as_me: WARNING: seamonkey-plugin not found, trying another" >&2;}
else
GECKO_CFLAGS=$pkg_cv_GECKO_CFLAGS
GECKO_LIBS=$pkg_cv_GECKO_LIBS
@@ -8099,11 +8134,11 @@ fi
# Put the nasty error message in config.log where it belongs
echo "$GECKO_PKG_ERRORS" >&5
- as_fn_error $? "npapi-sdk not found, all out ot tries" "$LINENO" 5
+ as_fn_error $? "npapi-sdk not found, all out of tries" "$LINENO" 5
elif test $pkg_failed = untried; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
- as_fn_error $? "npapi-sdk not found, all out ot tries" "$LINENO" 5
+ as_fn_error $? "npapi-sdk not found, all out of tries" "$LINENO" 5
else
GECKO_CFLAGS=$pkg_cv_GECKO_CFLAGS
GECKO_LIBS=$pkg_cv_GECKO_LIBS
diff --git a/configure.in b/configure.in
index 8d0c87d..17ee2be 100644
--- a/configure.in
+++ b/configure.in
@@ -2,7 +2,7 @@ dnl Process this file with autoconf to produce a configure script.
dnl Created by Anjuta application wizard.
AC_INIT(configure.in)
-AM_INIT_AUTOMAKE(gecko-mediaplayer, 1.0.6)
+AM_INIT_AUTOMAKE(gecko-mediaplayer, 1.0.7)
AM_CONFIG_HEADER(config.h)
AM_MAINTAINER_MODE([enable])
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
@@ -31,7 +31,7 @@ PKG_CHECK_MODULES(GLIB, [glib-2.0])
AC_SUBST(GLIB_CFLAGS)
AC_SUBST(GLIB_LIBS)
-PKG_CHECK_MODULES(GMLIB, [gmlib >= 1.0.5])
+PKG_CHECK_MODULES(GMLIB, [gmlib >= 1.0.7])
AC_SUBST(GMLIB_CFLAGS)
AC_SUBST(GMLIB_LIBS)
@@ -79,7 +79,7 @@ fi
if test "$GECKO_CFLAGS" = ""; then
PKG_CHECK_MODULES(GECKO, [seamonkey-plugin seamonkey-xpcom],[ AC_MSG_NOTICE([Using seamonkey])
- ],[AC_MSG_WARN([seamokey-plugin not found, trying another])])
+ ],[AC_MSG_WARN([seamonkey-plugin not found, trying another])])
fi
if test "$GECKO_CFLAGS" = ""; then
@@ -94,7 +94,7 @@ fi
if test "$GECKO_CFLAGS" = ""; then
PKG_CHECK_MODULES(GECKO, [npapi-sdk],[ AC_MSG_NOTICE([Using npapi-sdk])
- ],[AC_MSG_ERROR([npapi-sdk not found, all out ot tries])])
+ ],[AC_MSG_ERROR([npapi-sdk not found, all out of tries])])
require_nspr="yes"
fi
diff --git a/gecko-mediaplayer.spec b/gecko-mediaplayer.spec
index 6db5aeb..7cdfe5e 100644
--- a/gecko-mediaplayer.spec
+++ b/gecko-mediaplayer.spec
@@ -1,4 +1,4 @@
-%define ver 1.0.6
+%define ver 1.0.7
%define use_gconf
Name: gecko-mediaplayer
diff --git a/po/cs.gmo b/po/cs.gmo
index 5c94c4d..4174bab 100644
Binary files a/po/cs.gmo and b/po/cs.gmo differ
diff --git a/po/cs.po b/po/cs.po
index cfa8981..8b11971 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gecko-mediaplayer 0.9.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-21 21:31-0600\n"
+"POT-Creation-Date: 2012-10-08 07:19-0600\n"
"PO-Revision-Date: 2009-07-07 13:06+0200\n"
"Last-Translator: Petr Pisar <petr.pisar at atlas.cz>\n"
"Language-Team: Czech <translation-team-cs at lists.sourceforge.net>\n"
@@ -16,50 +16,50 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: src/plugin.cpp:347
+#: src/plugin.cpp:427
#, c-format
msgid "gecko mediaplayer v%s\n"
msgstr ""
-#: src/plugin.cpp:622
+#: src/plugin.cpp:709
#, c-format
msgid "Cache fill: %2.2f%%"
msgstr "Naplnění vyrovnávací paměti: %2.2f %%"
-#: src/plugin.cpp:887
-#, fuzzy, c-format
+#: src/plugin.cpp:924
+#, fuzzy
msgid "Write unable to write because item is NULL\n"
msgstr "Metoda Write nemůže zapsat, protože položka je NULL\n"
# kibibyes per second
-#: src/plugin.cpp:956 src/plugin.cpp:1371
+#: src/plugin.cpp:990 src/plugin.cpp:1407
#, c-format
msgid "Caching %iK (%0.1f K/s)"
msgstr "Naplnění vyrovánací paměti: %iK (%0.1f K/s)"
# kibibyes per second
-#: src/plugin.cpp:959 src/plugin.cpp:1374
+#: src/plugin.cpp:993 src/plugin.cpp:1410
#, c-format
msgid "Cache fill: %2.2f%% (%0.1f K/s)"
msgstr "Naplnění vyrovnávací paměti: %2.2f %% (%0.1f KB/s)"
-#: src/plugin.cpp:2647
+#: src/plugin.cpp:2618
msgid "Playing"
msgstr ""
-#: src/plugin.cpp:2650
+#: src/plugin.cpp:2621
msgid "Paused"
msgstr ""
-#: src/plugin.cpp:2653
+#: src/plugin.cpp:2624
msgid "Stopped"
msgstr ""
-#: src/plugin.cpp:2657
+#: src/plugin.cpp:2628
#, c-format
msgid "Buffering %2.1lf%%"
msgstr ""
-#: src/plugin.cpp:2662
+#: src/plugin.cpp:2633
msgid "Unknown Status"
msgstr ""
diff --git a/po/de.gmo b/po/de.gmo
index 9574565..0cfe4d3 100644
Binary files a/po/de.gmo and b/po/de.gmo differ
diff --git a/po/de.po b/po/de.po
index ad7e04b..465413a 100644
--- a/po/de.po
+++ b/po/de.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gecko-mediaplayer 0.9.9.2-1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-21 21:31-0600\n"
+"POT-Creation-Date: 2012-10-08 07:19-0600\n"
"PO-Revision-Date: 2010-03-25 18:47+GMT\n"
"Last-Translator: Chris Leick <c.leick at vollbio.de>\n"
"Language-Team: German <debian-l10n-german at lists.debian.org>\n"
@@ -17,48 +17,47 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: src/plugin.cpp:347
+#: src/plugin.cpp:427
#, c-format
msgid "gecko mediaplayer v%s\n"
msgstr ""
-#: src/plugin.cpp:622
+#: src/plugin.cpp:709
#, c-format
msgid "Cache fill: %2.2f%%"
msgstr "Zwischenspeicher-Füllstand: %2.2f%%"
-#: src/plugin.cpp:887
-#, c-format
+#: src/plugin.cpp:924
msgid "Write unable to write because item is NULL\n"
msgstr "Es kann nicht geschrieben werden, da das Element NULL ist\n"
-#: src/plugin.cpp:956 src/plugin.cpp:1371
+#: src/plugin.cpp:990 src/plugin.cpp:1407
#, c-format
msgid "Caching %iK (%0.1f K/s)"
msgstr "%i KB (%0.1f KB/s) werden zwischengespeichert"
-#: src/plugin.cpp:959 src/plugin.cpp:1374
+#: src/plugin.cpp:993 src/plugin.cpp:1410
#, c-format
msgid "Cache fill: %2.2f%% (%0.1f K/s)"
msgstr "Zwischenspeicher-Füllstand: %2.2f%% (%0.1f KB/s)"
-#: src/plugin.cpp:2647
+#: src/plugin.cpp:2618
msgid "Playing"
msgstr ""
-#: src/plugin.cpp:2650
+#: src/plugin.cpp:2621
msgid "Paused"
msgstr ""
-#: src/plugin.cpp:2653
+#: src/plugin.cpp:2624
msgid "Stopped"
msgstr ""
-#: src/plugin.cpp:2657
+#: src/plugin.cpp:2628
#, c-format
msgid "Buffering %2.1lf%%"
msgstr ""
-#: src/plugin.cpp:2662
+#: src/plugin.cpp:2633
msgid "Unknown Status"
msgstr ""
diff --git a/po/es.gmo b/po/es.gmo
index 24a4ac6..37e810d 100644
Binary files a/po/es.gmo and b/po/es.gmo differ
diff --git a/po/es.po b/po/es.po
index 8ec62f6..800b886 100644
--- a/po/es.po
+++ b/po/es.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Gecko Mediaplayer\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-21 21:31-0600\n"
+"POT-Creation-Date: 2012-10-08 07:19-0600\n"
"PO-Revision-Date: 2010-08-20 02:34+0100\n"
"Last-Translator: Cosme Domínguez Díaz <cosme.ddiaz at gmail.com>\n"
"Language-Team: \n"
@@ -20,48 +20,47 @@ msgstr ""
"X-Poedit-Country: SPAIN\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
-#: src/plugin.cpp:347
+#: src/plugin.cpp:427
#, c-format
msgid "gecko mediaplayer v%s\n"
msgstr ""
-#: src/plugin.cpp:622
+#: src/plugin.cpp:709
#, c-format
msgid "Cache fill: %2.2f%%"
msgstr "Almacenando cache: %2.2f%%"
-#: src/plugin.cpp:887
-#, c-format
+#: src/plugin.cpp:924
msgid "Write unable to write because item is NULL\n"
msgstr "Es imposible de escribir ya que el objeto es NULL\n"
-#: src/plugin.cpp:956 src/plugin.cpp:1371
+#: src/plugin.cpp:990 src/plugin.cpp:1407
#, c-format
msgid "Caching %iK (%0.1f K/s)"
msgstr "Almacenando en cache %iK (%0.1f K/s)"
-#: src/plugin.cpp:959 src/plugin.cpp:1374
+#: src/plugin.cpp:993 src/plugin.cpp:1410
#, c-format
msgid "Cache fill: %2.2f%% (%0.1f K/s)"
msgstr "Almacenando cache: %2.2f%% (%0.1f K/s)"
-#: src/plugin.cpp:2647
+#: src/plugin.cpp:2618
msgid "Playing"
msgstr ""
-#: src/plugin.cpp:2650
+#: src/plugin.cpp:2621
msgid "Paused"
msgstr ""
-#: src/plugin.cpp:2653
+#: src/plugin.cpp:2624
msgid "Stopped"
msgstr ""
-#: src/plugin.cpp:2657
+#: src/plugin.cpp:2628
#, c-format
msgid "Buffering %2.1lf%%"
msgstr ""
-#: src/plugin.cpp:2662
+#: src/plugin.cpp:2633
msgid "Unknown Status"
msgstr ""
diff --git a/po/fr.gmo b/po/fr.gmo
index 9ac42b1..8263606 100644
Binary files a/po/fr.gmo and b/po/fr.gmo differ
diff --git a/po/fr.po b/po/fr.po
index 632bc3a..06824ce 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gecko-mediaplayer\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-21 21:31-0600\n"
+"POT-Creation-Date: 2012-10-08 07:19-0600\n"
"PO-Revision-Date: 2011-06-08 16:04+0100\n"
"Last-Translator: Alexandre Bedot <alexandre.bedot at free.fr>\n"
"Language-Team: French <fr at li.org>\n"
@@ -18,48 +18,47 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: src/plugin.cpp:347
+#: src/plugin.cpp:427
#, c-format
msgid "gecko mediaplayer v%s\n"
msgstr "gecko mediaplayer v%s\n"
-#: src/plugin.cpp:622
+#: src/plugin.cpp:709
#, c-format
msgid "Cache fill: %2.2f%%"
msgstr "Mise en mémoire tampon : %2.2f%%"
-#: src/plugin.cpp:887
-#, c-format
+#: src/plugin.cpp:924
msgid "Write unable to write because item is NULL\n"
msgstr "Écrire : Écriture impossible; l'objet est de type NULL.\n"
-#: src/plugin.cpp:956 src/plugin.cpp:1371
+#: src/plugin.cpp:990 src/plugin.cpp:1407
#, c-format
msgid "Caching %iK (%0.1f K/s)"
msgstr "Mise en mémoire tampon : %iK (%0.1f K/s)"
-#: src/plugin.cpp:959 src/plugin.cpp:1374
+#: src/plugin.cpp:993 src/plugin.cpp:1410
#, c-format
msgid "Cache fill: %2.2f%% (%0.1f K/s)"
msgstr "Mise en mémoire tampon : %2.2f%% (%0.1f K/s)"
-#: src/plugin.cpp:2647
+#: src/plugin.cpp:2618
msgid "Playing"
msgstr "Lecture en cours"
-#: src/plugin.cpp:2650
+#: src/plugin.cpp:2621
msgid "Paused"
msgstr "En pause"
-#: src/plugin.cpp:2653
+#: src/plugin.cpp:2624
msgid "Stopped"
msgstr "Arrêté"
-#: src/plugin.cpp:2657
+#: src/plugin.cpp:2628
#, c-format
msgid "Buffering %2.1lf%%"
msgstr "État du tampon %2.1lf%%"
-#: src/plugin.cpp:2662
+#: src/plugin.cpp:2633
msgid "Unknown Status"
msgstr "État inconnu"
diff --git a/po/gecko-mediaplayer.pot b/po/gecko-mediaplayer.pot
index 0d5d04d..fb8c79c 100644
--- a/po/gecko-mediaplayer.pot
+++ b/po/gecko-mediaplayer.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-21 21:31-0600\n"
+"POT-Creation-Date: 2012-10-08 07:19-0600\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
"Language-Team: LANGUAGE <LL at li.org>\n"
@@ -17,48 +17,47 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: src/plugin.cpp:347
+#: src/plugin.cpp:427
#, c-format
msgid "gecko mediaplayer v%s\n"
msgstr ""
-#: src/plugin.cpp:622
+#: src/plugin.cpp:709
#, c-format
msgid "Cache fill: %2.2f%%"
msgstr ""
-#: src/plugin.cpp:887
-#, c-format
+#: src/plugin.cpp:924
msgid "Write unable to write because item is NULL\n"
msgstr ""
-#: src/plugin.cpp:956 src/plugin.cpp:1371
+#: src/plugin.cpp:990 src/plugin.cpp:1407
#, c-format
msgid "Caching %iK (%0.1f K/s)"
msgstr ""
-#: src/plugin.cpp:959 src/plugin.cpp:1374
+#: src/plugin.cpp:993 src/plugin.cpp:1410
#, c-format
msgid "Cache fill: %2.2f%% (%0.1f K/s)"
msgstr ""
-#: src/plugin.cpp:2647
+#: src/plugin.cpp:2618
msgid "Playing"
msgstr ""
-#: src/plugin.cpp:2650
+#: src/plugin.cpp:2621
msgid "Paused"
msgstr ""
-#: src/plugin.cpp:2653
+#: src/plugin.cpp:2624
msgid "Stopped"
msgstr ""
-#: src/plugin.cpp:2657
+#: src/plugin.cpp:2628
#, c-format
msgid "Buffering %2.1lf%%"
msgstr ""
-#: src/plugin.cpp:2662
+#: src/plugin.cpp:2633
msgid "Unknown Status"
msgstr ""
diff --git a/po/it.gmo b/po/it.gmo
index 3eee6bc..387f6c6 100644
Binary files a/po/it.gmo and b/po/it.gmo differ
diff --git a/po/it.po b/po/it.po
index db6c913..4c3d8f0 100644
--- a/po/it.po
+++ b/po/it.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gecko-mediaplayer\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-21 21:31-0600\n"
+"POT-Creation-Date: 2012-10-08 07:19-0600\n"
"PO-Revision-Date: 2011-10-16 17:42+0200\n"
"Last-Translator: Francesco Groccia <frgroccia gmail.com>\n"
"Language-Team: Italian <tp at lists.linux.it>\n"
@@ -16,48 +16,47 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: src/plugin.cpp:347
+#: src/plugin.cpp:427
#, c-format
msgid "gecko mediaplayer v%s\n"
msgstr "gecko mediaplayer v%s\n"
-#: src/plugin.cpp:622
+#: src/plugin.cpp:709
#, c-format
msgid "Cache fill: %2.2f%%"
msgstr "Cache piena al: %2.2f%%"
-#: src/plugin.cpp:887
-#, c-format
+#: src/plugin.cpp:924
msgid "Write unable to write because item is NULL\n"
msgstr "Impossibile scrivere perché l'oggetto è NULL\n"
-#: src/plugin.cpp:956 src/plugin.cpp:1371
+#: src/plugin.cpp:990 src/plugin.cpp:1407
#, c-format
msgid "Caching %iK (%0.1f K/s)"
msgstr "Riempimento della cache %iK (%0.1f K/s)"
-#: src/plugin.cpp:959 src/plugin.cpp:1374
+#: src/plugin.cpp:993 src/plugin.cpp:1410
#, c-format
msgid "Cache fill: %2.2f%% (%0.1f K/s)"
msgstr "Cache piena al: %2.2f%% (%0.1f K/s)"
-#: src/plugin.cpp:2647
+#: src/plugin.cpp:2618
msgid "Playing"
msgstr "Riproduzione"
-#: src/plugin.cpp:2650
+#: src/plugin.cpp:2621
msgid "Paused"
msgstr "Pausa"
-#: src/plugin.cpp:2653
+#: src/plugin.cpp:2624
msgid "Stopped"
msgstr "Interrotto"
-#: src/plugin.cpp:2657
+#: src/plugin.cpp:2628
#, c-format
msgid "Buffering %2.1lf%%"
msgstr "Riempimento del buffer %2.1lf%%"
-#: src/plugin.cpp:2662
+#: src/plugin.cpp:2633
msgid "Unknown Status"
msgstr "Stato sconosciuto"
diff --git a/po/ja.gmo b/po/ja.gmo
index 31884c9..ccbd9a2 100644
Binary files a/po/ja.gmo and b/po/ja.gmo differ
diff --git a/po/ja.po b/po/ja.po
index b465ab1..fec94d1 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gecko-mediaplayer\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-21 21:31-0600\n"
+"POT-Creation-Date: 2012-10-08 07:19-0600\n"
"PO-Revision-Date: 2012-04-05 10:51+0900\n"
"Last-Translator: Munehiro Yamamoto <munepixyz at gmail.com>\n"
"Language-Team: munepi <munepixyz at gmail.com>\n"
@@ -17,48 +17,48 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: src/plugin.cpp:347
+#: src/plugin.cpp:427
#, c-format
msgid "gecko mediaplayer v%s\n"
msgstr "gecko mediaplayer v%s\n"
-#: src/plugin.cpp:622
+#: src/plugin.cpp:709
#, c-format
msgid "Cache fill: %2.2f%%"
msgstr "キャッシュ中: %2.2f%%"
-#: src/plugin.cpp:887
-#, fuzzy, c-format
+#: src/plugin.cpp:924
+#, fuzzy
msgid "Write unable to write because item is NULL\n"
msgstr "オブジェクトが NULL なので書き込むことができません"
-#: src/plugin.cpp:956 src/plugin.cpp:1371
+#: src/plugin.cpp:990 src/plugin.cpp:1407
#, fuzzy, c-format
msgid "Caching %iK (%0.1f K/s)"
msgstr "キャッシュ中: %2.2f%% (%0.1f K/s)"
-#: src/plugin.cpp:959 src/plugin.cpp:1374
+#: src/plugin.cpp:993 src/plugin.cpp:1410
#, c-format
msgid "Cache fill: %2.2f%% (%0.1f K/s)"
msgstr "キャッシュ中: %2.2f%% (%0.1f K/s)"
-#: src/plugin.cpp:2647
+#: src/plugin.cpp:2618
msgid "Playing"
msgstr "再生"
-#: src/plugin.cpp:2650
+#: src/plugin.cpp:2621
msgid "Paused"
msgstr "一時停止"
-#: src/plugin.cpp:2653
+#: src/plugin.cpp:2624
msgid "Stopped"
msgstr "停止"
-#: src/plugin.cpp:2657
+#: src/plugin.cpp:2628
#, c-format
msgid "Buffering %2.1lf%%"
msgstr "バッファ中 %2.1lf%%"
-#: src/plugin.cpp:2662
+#: src/plugin.cpp:2633
msgid "Unknown Status"
msgstr "不明なステータス"
diff --git a/po/nl.gmo b/po/nl.gmo
index 691331d..c876890 100644
Binary files a/po/nl.gmo and b/po/nl.gmo differ
diff --git a/po/nl.po b/po/nl.po
index 7201f26..2665550 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gecko-mediaplayer\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-21 21:31-0600\n"
+"POT-Creation-Date: 2012-10-08 07:19-0600\n"
"PO-Revision-Date: 2011-07-22 13:53+0200\n"
"Last-Translator: Mark Huijgen <mark.sf.net at huijgen.tk>\n"
"Language-Team: Mark Huijgen <mark.sf.net at huijgen.tk>\n"
@@ -17,48 +17,47 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: src/plugin.cpp:347
+#: src/plugin.cpp:427
#, c-format
msgid "gecko mediaplayer v%s\n"
msgstr ""
-#: src/plugin.cpp:622
+#: src/plugin.cpp:709
#, c-format
msgid "Cache fill: %2.2f%%"
msgstr "Buffer niveau: %2.2f%%"
-#: src/plugin.cpp:887
-#, c-format
+#: src/plugin.cpp:924
msgid "Write unable to write because item is NULL\n"
msgstr "Schrijven niet mogelijk omdat item NULL is\n"
-#: src/plugin.cpp:956 src/plugin.cpp:1371
+#: src/plugin.cpp:990 src/plugin.cpp:1407
#, c-format
msgid "Caching %iK (%0.1f K/s)"
msgstr "Bufferen %iK (%0.1f K/s)"
-#: src/plugin.cpp:959 src/plugin.cpp:1374
+#: src/plugin.cpp:993 src/plugin.cpp:1410
#, c-format
msgid "Cache fill: %2.2f%% (%0.1f K/s)"
msgstr "Buffer niveau: %2.2f%% (%0.1f K/s)"
-#: src/plugin.cpp:2647
+#: src/plugin.cpp:2618
msgid "Playing"
msgstr "Afspelen"
-#: src/plugin.cpp:2650
+#: src/plugin.cpp:2621
msgid "Paused"
msgstr "Gepauzeerd"
-#: src/plugin.cpp:2653
+#: src/plugin.cpp:2624
msgid "Stopped"
msgstr "Gestopt"
-#: src/plugin.cpp:2657
+#: src/plugin.cpp:2628
#, c-format
msgid "Buffering %2.1lf%%"
msgstr "Bufferen %2.1lf%%"
-#: src/plugin.cpp:2662
+#: src/plugin.cpp:2633
msgid "Unknown Status"
msgstr "Onbekende status"
diff --git a/po/pl.gmo b/po/pl.gmo
index 7c76efb..5e0c3f1 100644
Binary files a/po/pl.gmo and b/po/pl.gmo differ
diff --git a/po/pl.po b/po/pl.po
index dc2bfe4..be674c2 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gecko-mediaplayer 0.5.3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-21 21:31-0600\n"
+"POT-Creation-Date: 2012-10-08 07:19-0600\n"
"PO-Revision-Date: 2011-06-15 21:50+0200\n"
"Last-Translator: Julian Sikorski <belegdol at gmail.com>\n"
"Language-Team: Polish <gnomepl at pandora.info.bielsko.pl>\n"
@@ -21,48 +21,47 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2);\n"
-#: src/plugin.cpp:347
+#: src/plugin.cpp:427
#, c-format
msgid "gecko mediaplayer v%s\n"
msgstr "gecko mediaplayer w%s\n"
-#: src/plugin.cpp:622
+#: src/plugin.cpp:709
#, c-format
msgid "Cache fill: %2.2f%%"
msgstr "Zapełnienie bufora: %2.2f%%"
-#: src/plugin.cpp:887
-#, c-format
+#: src/plugin.cpp:924
msgid "Write unable to write because item is NULL\n"
msgstr "Zapis niemożliwy ponieważ element jest NULL\n"
-#: src/plugin.cpp:956 src/plugin.cpp:1371
+#: src/plugin.cpp:990 src/plugin.cpp:1407
#, c-format
msgid "Caching %iK (%0.1f K/s)"
msgstr "Buforowanie: %iK (%0.1f K/s)"
-#: src/plugin.cpp:959 src/plugin.cpp:1374
+#: src/plugin.cpp:993 src/plugin.cpp:1410
#, c-format
msgid "Cache fill: %2.2f%% (%0.1f K/s)"
msgstr "Zapełnienie bufora: %2.2f%% (%0.1f K/s)"
-#: src/plugin.cpp:2647
+#: src/plugin.cpp:2618
msgid "Playing"
msgstr "Odtwarzanie "
-#: src/plugin.cpp:2650
+#: src/plugin.cpp:2621
msgid "Paused"
msgstr "Wstrzymano"
-#: src/plugin.cpp:2653
+#: src/plugin.cpp:2624
msgid "Stopped"
msgstr "Zatrzymano"
-#: src/plugin.cpp:2657
+#: src/plugin.cpp:2628
#, c-format
msgid "Buffering %2.1lf%%"
msgstr "Buforowanie %2.1lf%%"
-#: src/plugin.cpp:2662
+#: src/plugin.cpp:2633
msgid "Unknown Status"
msgstr "Stan nieznany"
diff --git a/po/pt.gmo b/po/pt.gmo
index 1affb52..1ad5104 100644
Binary files a/po/pt.gmo and b/po/pt.gmo differ
diff --git a/po/pt.po b/po/pt.po
index 6ec1802..b1052ed 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gecko-mediaplayer\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-21 21:31-0600\n"
+"POT-Creation-Date: 2012-10-08 07:19-0600\n"
"PO-Revision-Date: 2012-04-05 10:56-0000\n"
"Last-Translator: Sérgio Marques <smarquespt at gmail.com>\n"
"Language-Team: \n"
@@ -17,48 +17,47 @@ msgstr ""
"X-Poedit-Language: Potuguese\n"
"X-Poedit-Country: Portugal\n"
-#: src/plugin.cpp:347
+#: src/plugin.cpp:427
#, c-format
msgid "gecko mediaplayer v%s\n"
msgstr "gecko mediaplayer v%s\n"
-#: src/plugin.cpp:622
+#: src/plugin.cpp:709
#, c-format
msgid "Cache fill: %2.2f%%"
msgstr "Preenchimento de cache: %2.2f%%"
-#: src/plugin.cpp:887
-#, c-format
+#: src/plugin.cpp:924
msgid "Write unable to write because item is NULL\n"
msgstr "Não é possível escrever pois o item é NULL\n"
-#: src/plugin.cpp:956 src/plugin.cpp:1371
+#: src/plugin.cpp:990 src/plugin.cpp:1407
#, c-format
msgid "Caching %iK (%0.1f K/s)"
msgstr "A colocar em cache %iK (%0.1f K/s)"
-#: src/plugin.cpp:959 src/plugin.cpp:1374
+#: src/plugin.cpp:993 src/plugin.cpp:1410
#, c-format
msgid "Cache fill: %2.2f%% (%0.1f K/s)"
msgstr "Preenchimento de cache: %2.2f%% (%0.1f K/s)"
-#: src/plugin.cpp:2647
+#: src/plugin.cpp:2618
msgid "Playing"
msgstr "A reproduzir"
-#: src/plugin.cpp:2650
+#: src/plugin.cpp:2621
msgid "Paused"
msgstr "Em pausa"
-#: src/plugin.cpp:2653
+#: src/plugin.cpp:2624
msgid "Stopped"
msgstr "Parado"
-#: src/plugin.cpp:2657
+#: src/plugin.cpp:2628
#, c-format
msgid "Buffering %2.1lf%%"
msgstr "A processar %2.1lf%%"
-#: src/plugin.cpp:2662
+#: src/plugin.cpp:2633
msgid "Unknown Status"
msgstr "Estado desconhecido"
diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo
index 9d2116d..87aea27 100644
Binary files a/po/pt_BR.gmo and b/po/pt_BR.gmo differ
diff --git a/po/pt_BR.po b/po/pt_BR.po
index e2f7e95..861e8c7 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gecko-mediaplayer 0.9.4\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-21 21:31-0600\n"
+"POT-Creation-Date: 2012-10-08 07:19-0600\n"
"PO-Revision-Date: 2008-05-31 12:46-0300\n"
"Last-Translator: \n"
"Language-Team: Portugese <LL at li.org>\n"
@@ -16,48 +16,48 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: src/plugin.cpp:347
+#: src/plugin.cpp:427
#, c-format
msgid "gecko mediaplayer v%s\n"
msgstr ""
-#: src/plugin.cpp:622
+#: src/plugin.cpp:709
#, c-format
msgid "Cache fill: %2.2f%%"
msgstr "Armazenando cache: %2.2f%%"
-#: src/plugin.cpp:887
-#, fuzzy, c-format
+#: src/plugin.cpp:924
+#, fuzzy
msgid "Write unable to write because item is NULL\n"
msgstr "Não foi possível escrever porque o item é inválido (NULL)"
-#: src/plugin.cpp:956 src/plugin.cpp:1371
+#: src/plugin.cpp:990 src/plugin.cpp:1407
#, fuzzy, c-format
msgid "Caching %iK (%0.1f K/s)"
msgstr "Armazenando cache: %2.2f%% (%0.1f K/s)"
-#: src/plugin.cpp:959 src/plugin.cpp:1374
+#: src/plugin.cpp:993 src/plugin.cpp:1410
#, c-format
msgid "Cache fill: %2.2f%% (%0.1f K/s)"
msgstr "Armazenando cache: %2.2f%% (%0.1f K/s)"
-#: src/plugin.cpp:2647
+#: src/plugin.cpp:2618
msgid "Playing"
msgstr ""
-#: src/plugin.cpp:2650
+#: src/plugin.cpp:2621
msgid "Paused"
msgstr ""
-#: src/plugin.cpp:2653
+#: src/plugin.cpp:2624
msgid "Stopped"
msgstr ""
-#: src/plugin.cpp:2657
+#: src/plugin.cpp:2628
#, c-format
msgid "Buffering %2.1lf%%"
msgstr ""
-#: src/plugin.cpp:2662
+#: src/plugin.cpp:2633
msgid "Unknown Status"
msgstr ""
diff --git a/po/tr.gmo b/po/tr.gmo
index 8171e61..d0d3ca1 100644
Binary files a/po/tr.gmo and b/po/tr.gmo differ
diff --git a/po/tr.po b/po/tr.po
index 441f5b9..d9468b7 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: tr\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-21 21:31-0600\n"
+"POT-Creation-Date: 2012-10-08 07:19-0600\n"
"PO-Revision-Date: 2011-06-13 14:09+0300\n"
"Last-Translator: Onur Küçük <onur at pardus.org.tr>\n"
"Language-Team: Turkish <turkce at pardus.org.tr>\n"
@@ -18,48 +18,47 @@ msgstr ""
"X-Generator: Lokalize 1.0\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: src/plugin.cpp:347
+#: src/plugin.cpp:427
#, c-format
msgid "gecko mediaplayer v%s\n"
msgstr "gecko mediaplayer %s\n"
-#: src/plugin.cpp:622
+#: src/plugin.cpp:709
#, c-format
msgid "Cache fill: %2.2f%%"
msgstr "Önbellek: %2.2f%%"
-#: src/plugin.cpp:887
-#, c-format
+#: src/plugin.cpp:924
msgid "Write unable to write because item is NULL\n"
msgstr "NULL içerik yazılamıyor\n"
-#: src/plugin.cpp:956 src/plugin.cpp:1371
+#: src/plugin.cpp:990 src/plugin.cpp:1407
#, c-format
msgid "Caching %iK (%0.1f K/s)"
msgstr "Önbellek %iK (%0.1f K/s)"
-#: src/plugin.cpp:959 src/plugin.cpp:1374
+#: src/plugin.cpp:993 src/plugin.cpp:1410
#, c-format
msgid "Cache fill: %2.2f%% (%0.1f K/s)"
msgstr "Önbellek: %2.2f%% (%0.1f K/s)"
-#: src/plugin.cpp:2647
+#: src/plugin.cpp:2618
msgid "Playing"
msgstr "Oynatılıyor"
-#: src/plugin.cpp:2650
+#: src/plugin.cpp:2621
msgid "Paused"
msgstr "Durakladı"
-#: src/plugin.cpp:2653
+#: src/plugin.cpp:2624
msgid "Stopped"
msgstr "Durdu"
-#: src/plugin.cpp:2657
+#: src/plugin.cpp:2628
#, c-format
msgid "Buffering %2.1lf%%"
msgstr "Önbellek %2.1lf%%"
-#: src/plugin.cpp:2662
+#: src/plugin.cpp:2633
msgid "Unknown Status"
msgstr "Bilinmeyen Durum"
diff --git a/src/Makefile.in b/src/Makefile.in
index 30d79a8..017563f 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -1,9 +1,9 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -16,6 +16,23 @@
@SET_MAKE@
VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@@ -104,30 +121,30 @@ am__depfiles_maybe = depfiles
am__mv = mv -f
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_$(V))
-am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY))
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
am__v_CXX_0 = @echo " CXX " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
am__v_at_0 = @
CXXLD = $(CXX)
CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
-o $@
-AM_V_CXXLD = $(am__v_CXXLD_$(V))
-am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY))
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
am__v_CXXLD_0 = @echo " CXXLD " $@;
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
am__v_CC_0 = @echo " CC " $@;
CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
SOURCES = $(gecko_mediaplayer_dvx_so_SOURCES) \
$(gecko_mediaplayer_qt_so_SOURCES) \
@@ -146,6 +163,11 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
install-pdf-recursive install-ps-recursive install-recursive \
installcheck-recursive installdirs-recursive pdf-recursive \
ps-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
@@ -422,8 +444,11 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
$(am__aclocal_m4_deps):
install-install_libexecPROGRAMS: $(install_libexec_PROGRAMS)
@$(NORMAL_INSTALL)
- test -z "$(install_libexecdir)" || $(MKDIR_P) "$(DESTDIR)$(install_libexecdir)"
@list='$(install_libexec_PROGRAMS)'; test -n "$(install_libexecdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(install_libexecdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(install_libexecdir)" || exit 1; \
+ fi; \
for p in $$list; do echo "$$p $$p"; done | \
sed 's/$(EXEEXT)$$//' | \
while read p p1; do if test -f $$p; \
@@ -457,19 +482,19 @@ uninstall-install_libexecPROGRAMS:
clean-install_libexecPROGRAMS:
-test -z "$(install_libexec_PROGRAMS)" || rm -f $(install_libexec_PROGRAMS)
-gecko-mediaplayer-dvx.so$(EXEEXT): $(gecko_mediaplayer_dvx_so_OBJECTS) $(gecko_mediaplayer_dvx_so_DEPENDENCIES)
+gecko-mediaplayer-dvx.so$(EXEEXT): $(gecko_mediaplayer_dvx_so_OBJECTS) $(gecko_mediaplayer_dvx_so_DEPENDENCIES) $(EXTRA_gecko_mediaplayer_dvx_so_DEPENDENCIES)
@rm -f gecko-mediaplayer-dvx.so$(EXEEXT)
$(AM_V_CXXLD)$(gecko_mediaplayer_dvx_so_LINK) $(gecko_mediaplayer_dvx_so_OBJECTS) $(gecko_mediaplayer_dvx_so_LDADD) $(LIBS)
-gecko-mediaplayer-qt.so$(EXEEXT): $(gecko_mediaplayer_qt_so_OBJECTS) $(gecko_mediaplayer_qt_so_DEPENDENCIES)
+gecko-mediaplayer-qt.so$(EXEEXT): $(gecko_mediaplayer_qt_so_OBJECTS) $(gecko_mediaplayer_qt_so_DEPENDENCIES) $(EXTRA_gecko_mediaplayer_qt_so_DEPENDENCIES)
@rm -f gecko-mediaplayer-qt.so$(EXEEXT)
$(AM_V_CXXLD)$(gecko_mediaplayer_qt_so_LINK) $(gecko_mediaplayer_qt_so_OBJECTS) $(gecko_mediaplayer_qt_so_LDADD) $(LIBS)
-gecko-mediaplayer-rm.so$(EXEEXT): $(gecko_mediaplayer_rm_so_OBJECTS) $(gecko_mediaplayer_rm_so_DEPENDENCIES)
+gecko-mediaplayer-rm.so$(EXEEXT): $(gecko_mediaplayer_rm_so_OBJECTS) $(gecko_mediaplayer_rm_so_DEPENDENCIES) $(EXTRA_gecko_mediaplayer_rm_so_DEPENDENCIES)
@rm -f gecko-mediaplayer-rm.so$(EXEEXT)
$(AM_V_CXXLD)$(gecko_mediaplayer_rm_so_LINK) $(gecko_mediaplayer_rm_so_OBJECTS) $(gecko_mediaplayer_rm_so_LDADD) $(LIBS)
-gecko-mediaplayer-wmp.so$(EXEEXT): $(gecko_mediaplayer_wmp_so_OBJECTS) $(gecko_mediaplayer_wmp_so_DEPENDENCIES)
+gecko-mediaplayer-wmp.so$(EXEEXT): $(gecko_mediaplayer_wmp_so_OBJECTS) $(gecko_mediaplayer_wmp_so_DEPENDENCIES) $(EXTRA_gecko_mediaplayer_wmp_so_DEPENDENCIES)
@rm -f gecko-mediaplayer-wmp.so$(EXEEXT)
$(AM_V_CXXLD)$(gecko_mediaplayer_wmp_so_LINK) $(gecko_mediaplayer_wmp_so_OBJECTS) $(gecko_mediaplayer_wmp_so_LDADD) $(LIBS)
-gecko-mediaplayer.so$(EXEEXT): $(gecko_mediaplayer_so_OBJECTS) $(gecko_mediaplayer_so_DEPENDENCIES)
+gecko-mediaplayer.so$(EXEEXT): $(gecko_mediaplayer_so_OBJECTS) $(gecko_mediaplayer_so_DEPENDENCIES) $(EXTRA_gecko_mediaplayer_so_DEPENDENCIES)
@rm -f gecko-mediaplayer.so$(EXEEXT)
$(AM_V_CXXLD)$(gecko_mediaplayer_so_LINK) $(gecko_mediaplayer_so_OBJECTS) $(gecko_mediaplayer_so_LDADD) $(LIBS)
@@ -496,18 +521,16 @@ distclean-compile:
.cpp.o:
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
+ at am__fastdepCXX_FALSE@ $(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
.cpp.obj:
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+ at am__fastdepCXX_FALSE@ $(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
@@ -676,13 +699,10 @@ distdir: $(DISTFILES)
done
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
- test -d "$(distdir)/$$subdir" \
- || $(MKDIR_P) "$(distdir)/$$subdir" \
- || exit 1; \
- fi; \
- done
- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
$(am__relativize); \
new_distdir=$$reldir; \
@@ -720,10 +740,15 @@ install-am: all-am
installcheck: installcheck-recursive
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
diff --git a/src/plugin.cpp b/src/plugin.cpp
index e8ad982..e03c38a 100644
--- a/src/plugin.cpp
+++ b/src/plugin.cpp
@@ -42,6 +42,7 @@
#include "plugin_setup.h"
#include "plugin_types.h"
#include "plugin_dbus.h"
+
#ifdef HAVE_NSPR
#include <nspr/nspr.h>
#else
@@ -50,6 +51,7 @@
#include <nsIServiceManager.h>
#include <nsISupportsPrimitives.h>
#endif
+
#include <dlfcn.h>
static NPObject *sWindowObj;
@@ -182,6 +184,84 @@ void postPlayStateChange(NPP mInstance, const gint state)
g_free(jscript);
}
+const gchar *NPReasonToString(NPReason reason)
+{
+
+ switch (reason) {
+ case NPRES_DONE:
+ return "Done";
+ break;
+ case NPRES_NETWORK_ERR:
+ return "Network Error";
+ break;
+ case NPRES_USER_BREAK:
+ return "User Break";
+ break;
+ default:
+ return "Unknown Reason";
+ }
+
+}
+
+
+const gchar *NPErrorToString(NPError error)
+{
+
+ switch (error) {
+ case NPERR_NO_ERROR:
+ return "No Error";
+ break;
+ case NPERR_GENERIC_ERROR:
+ return "Generic Error";
+ break;
+ case NPERR_INVALID_INSTANCE_ERROR:
+ return "Invalid Instance Error";
+ break;
+ case NPERR_INVALID_FUNCTABLE_ERROR:
+ return "Invalid Functable Error";
+ break;
+ case NPERR_MODULE_LOAD_FAILED_ERROR:
+ return "Module Load Failed Error";
+ break;
+ case NPERR_OUT_OF_MEMORY_ERROR:
+ return "Out Of Memory Error";
+ break;
+ case NPERR_INVALID_PLUGIN_ERROR:
+ return "Invalid Plugin Error";
+ break;
+ case NPERR_INVALID_PLUGIN_DIR_ERROR:
+ return "Invalid Plugin Dir Error";
+ break;
+ case NPERR_INCOMPATIBLE_VERSION_ERROR:
+ return "Incompatible Version Error";
+ break;
+ case NPERR_INVALID_PARAM:
+ return "Invalid Param";
+ break;
+ case NPERR_INVALID_URL:
+ return "Invalid URL";
+ break;
+ case NPERR_FILE_NOT_FOUND:
+ return "File Not Found";
+ break;
+ case NPERR_NO_DATA:
+ return "No Data";
+ break;
+ case NPERR_STREAM_NOT_SEEKABLE:
+ return "Stream Not Seekable";
+ break;
+ case NPERR_TIME_RANGE_NOT_SUPPORTED:
+ return "Time Range Not Supported";
+ break;
+ case NPERR_MALFORMED_SITE:
+ return "Malformed Site";
+ break;
+ default:
+ return "Unknown NPError Code";
+ break;
+ }
+}
+
////////////////////////////////////////
//
// CPlugin class implementation
@@ -350,9 +430,14 @@ tv_driver(NULL), tv_device(NULL), tv_input(NULL), tv_width(0), tv_height(0)
store = gm_pref_store_new("gecko-mediaplayer");
if (store != NULL) {
debug_level = gm_pref_store_get_int(store, DEBUG_LEVEL);
+ gm_log(debug_level, G_LOG_LEVEL_INFO, "debug_level = %i", debug_level);
player_backend = gm_pref_store_get_string(store, PLAYER_BACKEND);
- printf("Using player backend of '%s'\n", player_backend);
+ gm_log(debug_level, G_LOG_LEVEL_INFO, "Using player backend of '%s'\n",
+ (player_backend == NULL || strlen(player_backend) == 0 ) ? "gnome-mplayer" : player_backend);
gm_pref_store_free(store);
+ } else {
+ gm_log(TRUE, G_LOG_LEVEL_INFO, "Unable to find preference store, setting debug_level to 1");
+ debug_level = 1;
}
@@ -509,7 +594,8 @@ NPError CPlugin::SetWindow(NPWindow * aWindow)
if (ok) {
player_launched = TRUE;
} else {
- printf("Unable to launch %s: %s\n", app_name, error->message);
+ gm_log(debug_level, G_LOG_LEVEL_INFO, "Unable to launch %s: %s\n", app_name,
+ error->message);
g_error_free(error);
error = NULL;
}
@@ -529,12 +615,14 @@ NPError CPlugin::SetWindow(NPWindow * aWindow)
if (item && !item->requested) {
item->cancelled = FALSE;
if (item->streaming) {
- printf("Calling open_location with item = %p src = %s\n", item, item->src);
+ gm_log(debug_level, G_LOG_LEVEL_INFO,
+ "Calling open_location with item = %p src = %s\n", item, item->src);
open_location(this, item, FALSE);
item->requested = 1;
} else {
item->requested = 1;
- printf("Calling GetURLNotify with item = %p src = %s\n", item, item->src);
+ gm_log(debug_level, G_LOG_LEVEL_INFO,
+ "Calling GetURLNotify with item = %p src = %s\n", item, item->src);
this->GetURLNotify(mInstance, item->src, NULL, item);
}
}
@@ -583,11 +671,11 @@ NPBool CPlugin::isInitialized()
NPError CPlugin::NewStream(NPMIMEType type, NPStream * stream, NPBool seekable, uint16 * stype)
{
if (g_strrstr(stream->url, "javascript") == NULL) {
- printf("New Stream Requested - %s\n", stream->url);
+ gm_log(debug_level, G_LOG_LEVEL_DEBUG, "New Stream Requested - %s\n", stream->url);
}
if (g_strrstr(stream->url, "javascript") == NULL && stream->notifyData == NULL) {
- printf("item is NULL for %s\n", stream->url);
+ gm_log(debug_level, G_LOG_LEVEL_DEBUG, "item is NULL for %s\n", stream->url);
}
return NPERR_NO_ERROR;
@@ -596,21 +684,20 @@ NPError CPlugin::NewStream(NPMIMEType type, NPStream * stream, NPBool seekable,
NPError CPlugin::DestroyStream(NPStream * stream, NPError reason)
{
ListItem *item;
- gint id;
- gchar *path;
+ ListItem *fetch_item;
gchar *text;
- gboolean ready;
- gboolean newwindow;
+ gboolean fetch_next = TRUE;
if (g_strrstr(stream->url, "javascript") == NULL)
- printf("Entering destroy stream reason = %i for %s\n", reason, stream->url);
+ gm_log(debug_level, G_LOG_LEVEL_MESSAGE, "Entering destroy stream reason = %i - %s for %s",
+ reason, NPErrorToString(reason), stream->url);
if (reason == NPERR_NO_ERROR) {
item = (ListItem *) stream->notifyData;
// item = list_find(playlist, (gchar*)stream->url);
if (item == NULL) {
- printf("Leaving destroy stream - item not found\n");
+ gm_log(debug_level, G_LOG_LEVEL_DEBUG, "Leaving destroy stream - item not found");
return NPERR_NO_ERROR;
}
@@ -624,73 +711,83 @@ NPError CPlugin::DestroyStream(NPStream * stream, NPError reason)
g_free(text);
}
+
if (!item->opened && item->play) {
- id = item->controlid;
- path = g_strdup(item->path);
- ready = item->playerready;
- newwindow = item->newwindow;
+ gm_log(debug_level, G_LOG_LEVEL_MESSAGE, "item '%s' is not opened and is playable",
+ item->src);
if (!item->streaming)
item->streaming = streaming(item->src);
if (!item->streaming) {
- printf("in Destroy Stream\n");
- playlist = list_parse_qt(playlist, item);
- playlist = list_parse_qt2(playlist, item);
- playlist = list_parse_asx(playlist, item);
- playlist = list_parse_qml(playlist, item);
- playlist = list_parse_ram(playlist, item);
+ gm_log(debug_level, G_LOG_LEVEL_DEBUG, "in Destroy Stream");
+ playlist = list_parse_qt(playlist, item, FALSE);
+ playlist = list_parse_qt2(playlist, item, FALSE);
+ playlist = list_parse_asx(playlist, item, FALSE);
+ playlist = list_parse_qml(playlist, item, FALSE);
+ playlist = list_parse_ram(playlist, item, FALSE);
}
- // printf("item->play = %i\n",item->play);
- // printf("item->src = %s\n", item->src);
- // printf("item->streaming = %i\n", item->streaming);
- // printf("calling open_location from DestroyStream\n");
- if (item->play) {
- item->requested = TRUE;
- open_location(this, item, TRUE);
- if (post_dom_events && this->id != NULL) {
- postDOMEvent(mInstance, this->id, "qt_play");
+
+ if (item->playlist == FALSE) {
+ if (item != NULL && item->queuedtoplay == FALSE) {
+ if (!list_item_opened(playlist)) {
+ item = list_find_first_playable(playlist);
+ }
+ }
+ if (item != NULL) {
+ if (item->play == TRUE && item->opened == FALSE) {
+
+ open_location(this, item, TRUE);
+ if (post_dom_events && this->id != NULL) {
+ postDOMEvent(mInstance, this->id, "qt_play");
+ }
+ }
}
} else {
- item = list_find_next_playable(playlist);
+ item = list_find_first_playable(playlist);
if (item != NULL) {
- // printf("item->play = %i\n",item->play);
- // printf("item->src = %s\n", item->src);
- // printf("item->streaming = %i\n", item->streaming);
if (!item->streaming) {
- item->controlid = id;
- g_strlcpy(item->path, path, 1024);
- item->playerready = ready;
- item->newwindow = newwindow;
- item->cancelled = FALSE;
- item->requested = TRUE;
- if (item != NULL)
+ if (item->requested == FALSE) {
+ gm_log(debug_level, G_LOG_LEVEL_INFO, "Getting URL '%s'", item->src);
+ item->requested = TRUE;
this->GetURLNotify(mInstance, item->src, NULL, item);
- } else {
- open_location(this, item, FALSE);
- item->requested = TRUE;
- if (post_dom_events && this->id != NULL) {
- postDOMEvent(mInstance, this->id, "qt_play");
+ fetch_next = FALSE;
}
+ } else {
+ if (!list_item_opened(playlist))
+ open_location(this, item, FALSE);
+ }
+ }
+ }
+
+ // fetch the next item on the playlist
+ if (fetch_next) {
+ fetch_item = list_find_next_playable_after_listitem(playlist, item);
+ if (fetch_item != NULL) {
+ if (!fetch_item->streaming) {
+ gm_log(debug_level, G_LOG_LEVEL_INFO, "Prefetching URL '%s'", fetch_item->src);
+ fetch_item->requested = TRUE;
+ this->GetURLNotify(mInstance, fetch_item->src, NULL, fetch_item);
}
}
}
- g_free(path);
}
- //printf("Leaving destroy stream src = %s\n", item->src);
} else if (reason == NPERR_INVALID_URL) {
item = (ListItem *) stream->notifyData;
if (item) {
- printf("Destroy Stream, invalid url, item is %s\n", item->src);
+ gm_log(debug_level, G_LOG_LEVEL_INFO, "Destroy Stream, invalid url, item is %s\n",
+ item->src);
} else {
if (g_strrstr(stream->url, "javascript") == NULL) {
- printf("Destroy Stream, network error, item is NULL\n");
+ gm_log(debug_level, G_LOG_LEVEL_INFO,
+ "Destroy Stream, network error, item is NULL\n");
}
}
} else {
item = (ListItem *) stream->notifyData;
// item = list_find(playlist, (gchar*)stream->url);
if (g_strrstr(stream->url, "javascript") == NULL)
- printf("Exiting destroy stream reason = %i for %s\n", reason, stream->url);
+ gm_log(debug_level, G_LOG_LEVEL_DEBUG, "Exiting destroy stream reason = %i for %s\n",
+ reason, stream->url);
if (item == NULL) {
return NPERR_NO_ERROR;
} else {
@@ -707,71 +804,26 @@ NPError CPlugin::DestroyStream(NPStream * stream, NPError reason)
}
}
- // list_dump(playlist);
+ gm_log(debug_level, G_LOG_LEVEL_INFO,
+ "Leaving DestroyStream for %s and the playlist looks like this", stream->url);
+ list_dump(playlist);
return NPERR_NO_ERROR;
}
void CPlugin::URLNotify(const char *url, NPReason reason, void *notifyData)
{
ListItem *item = (ListItem *) notifyData;
- //DBusMessage *message;
- //const char *file;
- printf("URL Notify url = '%s'\nreason = %i\n%s\n%s\n%s\n", url, reason, item->src, item->local,
- path);
+ gm_log(debug_level, G_LOG_LEVEL_MESSAGE, "URL Notify url = '%s'\nreason = %i - %s\n%s\n%s\n%s",
+ url, reason, NPReasonToString(reason), item->src, item->local, path);
if (reason == NPRES_DONE) {
-
- if (!item->opened) {
- // open_location(this,item, TRUE);
-
- /*
- file = g_strdup(item->local);
- while (!playerready) {
- // printf("waiting for player\n");
- g_main_context_iteration(NULL,FALSE);
- }
- message = dbus_message_new_signal(path,"com.gnome.mplayer","Open");
- dbus_message_append_args(message, DBUS_TYPE_STRING, &file, DBUS_TYPE_INVALID);
- dbus_connection_send(connection,message,NULL);
- dbus_message_unref(message);
- */
- }
-
- if (item) {
- item->played = TRUE;
- if (!item->streaming) {
- item = list_find_next_playable(playlist);
- if (item) {
- if (item->retrieved || item->streaming) {
- open_location(this, item, TRUE);
- item->requested = TRUE;
- } else {
- this->GetURLNotify(mInstance, item->src, NULL, item);
- item->requested = TRUE;
- }
- }
- }
- } else {
- item = list_find_next_playable(playlist);
- if (item) {
- if (item->retrieved || item->streaming) {
- open_location(this, item, TRUE);
- item->requested = TRUE;
- } else {
- this->GetURLNotify(mInstance, item->src, NULL, item);
- item->requested = TRUE;
- }
- }
- }
-
-
-
+ // done
} else if (reason == NPRES_NETWORK_ERR) {
- printf("URL Notify result is Network Error\n");
+ // error
} else if (reason == NPRES_USER_BREAK) {
- printf("URL Notify result is User Break\n");
+ // user cancelled
} else {
- printf("%i is an invalid reason code in URLNotify\n", reason);
+ // something else
}
}
@@ -783,7 +835,7 @@ int32 CPlugin::WriteReady(NPStream * stream)
// printf("WriteReady called\n");
if (!acceptdata) {
- printf("Not accepting data\n");
+ gm_log(debug_level, G_LOG_LEVEL_INFO, "Not accepting data\n");
NPN_DestroyStream(mInstance, stream, NPERR_GENERIC_ERROR);
return -1;
}
@@ -794,20 +846,9 @@ int32 CPlugin::WriteReady(NPStream * stream)
if (item == NULL) {
if (mode == NP_FULL) {
- // printf("adding new item %s\n",stream->url);
- /*
- item = g_new0(ListItem, 1);
- g_strlcpy(item->src, stream->url, 1024);
- item->requested = TRUE;
- item->play = TRUE;
- if (!item->streaming)
- item->streaming = streaming(item->src);
- playlist = g_list_append(playlist, item);
- stream->notifyData = item;
- */
return -1;
} else {
- printf("item is null\nstream url %s\n", stream->url);
+ gm_log(debug_level, G_LOG_LEVEL_INFO, "item is null\nstream url %s\n", stream->url);
NPN_DestroyStream(mInstance, stream, NPERR_NO_ERROR);
return -1;
}
@@ -820,7 +861,7 @@ int32 CPlugin::WriteReady(NPStream * stream)
// printf("Write Ready item url = %s\n%s\n",item->src,stream->url);
if (item->cancelled) {
- printf("cancelling WriteReady\n");
+ gm_log(debug_level, G_LOG_LEVEL_INFO, "cancelling WriteReady\n");
NPN_DestroyStream(mInstance, stream, NPERR_NO_ERROR);
return -1;
}
@@ -852,7 +893,7 @@ int32 CPlugin::WriteReady(NPStream * stream)
}
if (item->retrieved) {
- printf("Duplicate request, item already retrieved\n");
+ gm_log(debug_level, G_LOG_LEVEL_INFO, "Duplicate request, item already retrieved\n");
NPN_DestroyStream(mInstance, stream, NPERR_NO_ERROR);
return -1;
}
@@ -867,15 +908,11 @@ int32 CPlugin::Write(NPStream * stream, int32 offset, int32 len, void *buffer)
gchar *text;
gdouble percent = 0.0;
gdouble rate = 0.0;
- gint id;
- gchar *path;
- gboolean ready;
- gboolean newwindow;
- gboolean ok_to_play = FALSE;
+ gchar *upper = NULL;
- // printf("Write Called\n");
+ gm_log(debug_level, G_LOG_LEVEL_DEBUG, "Write Called\n");
if (!acceptdata) {
- printf("not accepting data\n");
+ gm_log(debug_level, G_LOG_LEVEL_INFO, "not accepting data\n");
NPN_DestroyStream(mInstance, stream, NPERR_NO_ERROR);
return -1;
}
@@ -883,30 +920,23 @@ int32 CPlugin::Write(NPStream * stream, int32 offset, int32 len, void *buffer)
item = (ListItem *) stream->notifyData;
if (item == NULL) {
- printf("item is NULL\n");
- printf(_("Write unable to write because item is NULL\n"));
+ gm_log(debug_level, G_LOG_LEVEL_DEBUG, "item is NULL\n");
+ gm_log(debug_level, G_LOG_LEVEL_INFO, _("Write unable to write because item is NULL\n"));
NPN_DestroyStream(mInstance, stream, NPERR_GENERIC_ERROR);
return -1;
}
if (item->cancelled || item->retrieved) {
- printf("cancelled\n");
+ gm_log(debug_level, G_LOG_LEVEL_DEBUG, "cancelled\n");
NPN_DestroyStream(mInstance, stream, NPERR_NO_ERROR);
return -1;
}
+ upper = g_ascii_strup((char *) buffer, len);
if (strstr((char *) buffer, "ICY 200 OK") != NULL
|| strstr((char *) buffer, "Content-length:") != NULL
- || strstr((char *) buffer, "<HTML>") != NULL || item->streaming == TRUE
+ || (upper != NULL && strstr(upper, "<HTML>") != NULL) || item->streaming == TRUE
|| strstr(item->src, "file://") != NULL) {
- // If item is a block of jpeg images, just stream it
- // || stream->lastmodified == 0) { this is not valid for many sites
-
- // printf("BUFFER='%s'\n", buffer);
-
- // printf("item->streaming = %i\n", item->streaming);
- // printf("stream->lastmodified = %i\n", stream->lastmodified);
- // printf("stream->end = %i\n", stream->end);
item->streaming = TRUE;
open_location(this, item, FALSE);
@@ -917,20 +947,24 @@ int32 CPlugin::Write(NPStream * stream, int32 offset, int32 len, void *buffer)
if (item->localfp) {
fclose(item->localfp);
}
- printf("Got IceCast Stream, let mplayer stream it\n");
+ gm_log(debug_level, G_LOG_LEVEL_INFO, "Got IceCast Stream, let mplayer stream it\n");
NPN_DestroyStream(mInstance, stream, NPERR_NO_ERROR);
return -1;
}
+ if (upper != NULL) {
+ g_free(upper);
+ upper = NULL;
+ }
if ((!item->localfp) && (!item->retrieved)) {
- // printf("opening %s for localcache\n", item->local);
+ gm_log(debug_level, G_LOG_LEVEL_DEBUG, "opening %s for localcache\n", item->local);
item->localfp = fopen(item->local, "w+");
}
- // printf("Write item url = %s\n",item->src);
+ gm_log(debug_level, G_LOG_LEVEL_DEBUG, "Write item url = %s\n", item->src);
if (item->localfp == NULL) {
- printf("Local cache file is not open, cannot write data\n");
- NPN_DestroyStream(mInstance, stream, NPERR_NO_ERROR);
+ gm_log(debug_level, G_LOG_LEVEL_INFO, "Local cache file is not open, cannot write data\n");
+ NPN_DestroyStream(mInstance, stream, NPERR_GENERIC_ERROR);
return -1;
}
fseek(item->localfp, offset, SEEK_SET);
@@ -974,16 +1008,17 @@ int32 CPlugin::Write(NPStream * stream, int32 offset, int32 len, void *buffer)
}
if (!item->opened) {
if ((item->localsize >= (cache_size * 1024)) && (percent >= 0.2)) {
- // printf("Setting to play because %i > %i\n", item->localsize, cache_size * 1024);
- ok_to_play = TRUE;
+ gm_log(debug_level, G_LOG_LEVEL_DEBUG, "Setting to play because %i > %i\n",
+ item->localsize, cache_size * 1024);
+ item->oktoplay = TRUE;
}
- if (ok_to_play == FALSE && (item->localsize > (cache_size * 2 * 1024))
+ if (item->oktoplay == FALSE && (item->localsize > (cache_size * 2 * 1024))
&& (cache_size >= 512)) {
// printf("Setting to play because %i > %i (double cache)\n", item->localsize,
// cache_size * 2 * 1024);
- ok_to_play = TRUE;
+ item->oktoplay = TRUE;
}
- if (ok_to_play == FALSE) {
+ if (item->oktoplay == FALSE) {
if (item->bitrate == 0 && item->bitrate_requests < 5
&& ((gint) (percent * 100) > item->bitrate_requests)) {
item->bitrate = request_bitrate(this, item, item->local);
@@ -993,7 +1028,7 @@ int32 CPlugin::Write(NPStream * stream, int32 offset, int32 len, void *buffer)
if (item->localsize / item->bitrate >= 10 && (percent >= 0.2)) {
// printf("Setting to play because %i >= 10\n",
// item->localsize / item->bitrate);
- ok_to_play = TRUE;
+ item->oktoplay = TRUE;
if (post_dom_events && this->id != NULL) {
postDOMEvent(mInstance, this->id, "qt_canplay");
}
@@ -1002,51 +1037,50 @@ int32 CPlugin::Write(NPStream * stream, int32 offset, int32 len, void *buffer)
}
}
- // if not opened, over cache level and not an href target then try and open it
- if ((!item->opened) && ok_to_play == TRUE) {
- id = item->controlid;
- path = g_strdup(item->path);
- ready = item->playerready;
- newwindow = item->newwindow;
+
+ // item->playlist may have been set on an earlier pass, so do not bother
+ // checking for playlist again, if it is true.
+
+ if (!item->opened && item->play && item->oktoplay && !item->playlist) {
+ gm_log(debug_level, G_LOG_LEVEL_MESSAGE, "item '%s' is not opened and is playable",
+ item->src);
if (!item->streaming)
item->streaming = streaming(item->src);
if (!item->streaming) {
- playlist = list_parse_qt(playlist, item);
- playlist = list_parse_asx(playlist, item);
- playlist = list_parse_qml(playlist, item);
- playlist = list_parse_ram(playlist, item);
+ gm_log(debug_level, G_LOG_LEVEL_DEBUG, "in Write");
+ // we want to detect a playlist, but not add any items to the actual playlist
+ // if we find them
+ playlist = list_parse_qt(playlist, item, TRUE);
+ playlist = list_parse_qt2(playlist, item, TRUE);
+ playlist = list_parse_asx(playlist, item, TRUE);
+ playlist = list_parse_qml(playlist, item, TRUE);
+ playlist = list_parse_ram(playlist, item, TRUE);
}
- // printf("item->play = %i\n",item->play);
- // printf("item->src = %i\n", item->src);
- // printf("calling open_location from Write\n");
- if (item->play) {
- send_signal_with_integer(this, item, "SetGUIState", PLAYING);
- open_location(this, item, TRUE);
- item->requested = TRUE;
- if (post_dom_events && this->id != NULL) {
- postDOMEvent(mInstance, this->id, "qt_loadedfirstframe");
- postDOMEvent(mInstance, this->id, "qt_canplay");
- postDOMEvent(mInstance, this->id, "qt_play");
- }
- } else {
- item = list_find_next_playable(playlist);
- if (item != NULL) {
- item->controlid = id;
- g_strlcpy(item->path, path, 1024);
- item->playerready = ready;
- item->newwindow = newwindow;
- item->cancelled = FALSE;
- // printf("opening next playable items on the playlist\n");
- if (item->streaming) {
- open_location(this, item, FALSE);
- item->requested = TRUE;
- } else {
- this->GetURLNotify(mInstance, item->src, NULL, item);
- item->requested = TRUE;
+
+ gm_log(debug_level, G_LOG_LEVEL_MESSAGE, "Write item (%s) playlist = %i", item->src, item->playlist);
+
+ if (item->playlist == FALSE) {
+
+ // queuedtoplay is only true on a item when the player has requested the
+ // next item to play. So the rule is this
+ /*
+ 1. Automatically play only the first playable item on the playlist
+ 2. Play queuedtoplay items when they are playable and not opened
+
+ */
+ if (item->queuedtoplay == FALSE) {
+ if (!list_item_opened(playlist)) {
+ item = list_find_first_playable(playlist);
+ }
+ if (item->play == TRUE && item->opened == FALSE) {
+
+ open_location(this, item, TRUE);
+ if (post_dom_events && this->id != NULL) {
+ postDOMEvent(mInstance, this->id, "qt_play");
+ }
}
}
}
- g_free(path);
}
}
@@ -1343,7 +1377,8 @@ int progress_callback(void *clientp, double dltotal, double dlnow, double ultota
return 0; // keeps downloading
if (item->cancelled) {
- printf("cancelling download at %f for %s\n", dlnow, item->src);
+ gm_log(plugin->debug_level, G_LOG_LEVEL_DEBUG, "cancelling download at %f for %s\n", dlnow,
+ item->src);
return -1; // cancels download
}
//printf("item ready = %i,player ready = %i,%f,%f,%f\n", item->playerready, plugin->playerready,
@@ -1360,7 +1395,8 @@ int progress_callback(void *clientp, double dltotal, double dlnow, double ultota
percent = (gdouble) item->localsize / (gdouble) item->mediasize;
if (difftime(time(NULL), plugin->lastupdate) > 0.5) {
- printf("updating display id = %i\n", item->id);
+ gm_log(plugin->debug_level, G_LOG_LEVEL_INFO, "updating display id = %i\n",
+ item->id);
send_signal_with_double(plugin, item, "SetCachePercent", percent);
rate =
(gdouble) ((item->localsize -
@@ -1390,96 +1426,6 @@ int progress_callback(void *clientp, double dltotal, double dlnow, double ultota
item->lastsize = item->localsize;
}
}
- // Disable playing of partially cached apple.com files, mplayer seems to crash on these files
- /*
- if (!item->opened) {
- if ((item->localsize >= (plugin->cache_size * 1024)) && (percent >= 0.2)) {
- //printf("Setting to play because %i > %i\n", item->localsize,
- // plugin->cache_size * 1024);
- ok_to_play = TRUE;
- }
- if (ok_to_play == FALSE && (item->localsize > (plugin->cache_size * 2 * 1024))
- && (plugin->cache_size >= 512)) {
- //printf("Setting to play because %i > %i (double cache)\n", item->localsize,
- // plugin->cache_size * 2 * 1024);
- ok_to_play = TRUE;
- }
- if (ok_to_play == FALSE) {
- if (item->bitrate == 0 && item->bitrate_requests < 5
- && ((gint) (percent * 100) > item->bitrate_requests)) {
- //item->bitrate = request_bitrate(plugin, item, item->local);
- item->bitrate_requests++;
- }
- if (item->bitrate > 0) {
- if (item->localsize / item->bitrate >= 10 && (percent >= 0.2)) {
- printf("Setting to play becuase %i >= 10\n",
- item->localsize / item->bitrate);
- ok_to_play = TRUE;
- if (plugin->post_dom_events && plugin->id != NULL) {
- postDOMEvent(plugin->mInstance, plugin->id, "qt_canplay");
- }
- }
- }
- }
-
- }
- */
-
- // try downloading entire file
- ok_to_play = FALSE;
-
- // if not opened, over cache level and not an href target then try and open it
- if ((!item->opened) && ok_to_play == TRUE) {
- id = item->controlid;
- path = g_strdup(item->path);
- ready = item->playerready;
- newwindow = item->newwindow;
- if (!item->streaming)
- item->streaming = streaming(item->src);
- if (!item->streaming) {
- printf("in progress_callback\n");
- plugin->playlist = list_parse_qt(plugin->playlist, item);
- plugin->playlist = list_parse_qt2(plugin->playlist, item);
- plugin->playlist = list_parse_asx(plugin->playlist, item);
- plugin->playlist = list_parse_qml(plugin->playlist, item);
- plugin->playlist = list_parse_ram(plugin->playlist, item);
- }
- printf("item->play = %i\n", item->play);
- printf("item->src = %s\n", item->src);
- printf("calling open_location from progress_callback\n");
- if (item->play) {
- send_signal_with_integer(plugin, item, "SetGUIState", PLAYING);
- open_location(plugin, item, TRUE);
- item->requested = TRUE;
- if (plugin->post_dom_events && plugin->id != NULL) {
- postDOMEvent(plugin->mInstance, plugin->id, "qt_loadedfirstframe");
- postDOMEvent(plugin->mInstance, plugin->id, "qt_canplay");
- postDOMEvent(plugin->mInstance, plugin->id, "qt_play");
- }
- } else {
- item = list_find_next_playable(plugin->playlist);
- if (item != NULL) {
- item->controlid = id;
- g_strlcpy(item->path, path, 1024);
- item->playerready = ready;
- item->newwindow = newwindow;
- item->cancelled = FALSE;
- // printf("opening next playable items on the playlist\n");
- if (item->streaming) {
- open_location(plugin, item, FALSE);
- item->requested = TRUE;
- } else {
- if (!item->requested) {
- plugin->GetURLNotify(plugin->mInstance, item->src, NULL, item);
- item->requested = TRUE;
- }
- }
- }
- }
- g_free(path);
- }
-
-
}
return 0;
@@ -1488,13 +1434,10 @@ int progress_callback(void *clientp, double dltotal, double dlnow, double ultota
gpointer CURLGetURLNotify(gpointer data)
{
ListItem *item = (ListItem *) data;
+ ListItem *fetch_item = NULL;
CPlugin *plugin = (CPlugin *) item->plugin;
- gchar *path;
FILE *local;
CURL *curl;
- gint id;
- gboolean ready;
- gboolean newwindow;
if (item) {
local = fopen(item->local, "wb");
@@ -1511,66 +1454,77 @@ gpointer CURLGetURLNotify(gpointer data)
curl_easy_perform(curl);
curl_easy_cleanup(curl);
- printf("item retrieved using CURL\n");
+ gm_log(plugin->debug_level, G_LOG_LEVEL_INFO, "item retrieved using CURL\n");
//plugin->URLNotify(item->src, NPRES_DONE, item);
}
fclose(local);
- printf("fetched %s to %s opened = %i\n", item->src, item->local, item->opened);
+ gm_log(plugin->debug_level, G_LOG_LEVEL_DEBUG, "fetched %s to %s opened = %i\n",
+ item->src, item->local, item->opened);
send_signal_with_double(plugin, item, "SetCachePercent", 1.0);
send_signal_with_double(plugin, item, "SetCachePercent", 0.0);
item->retrieved = TRUE;
}
-
if (!item->opened) {
- id = item->controlid;
- path = g_strdup(item->path);
- ready = item->playerready;
- newwindow = item->newwindow;
if (!item->streaming)
item->streaming = streaming(item->src);
if (!item->streaming) {
- printf("in CURLGetURLNotify\n");
- plugin->playlist = list_parse_qt(plugin->playlist, item);
- plugin->playlist = list_parse_qt2(plugin->playlist, item);
- plugin->playlist = list_parse_asx(plugin->playlist, item);
- plugin->playlist = list_parse_qml(plugin->playlist, item);
- plugin->playlist = list_parse_ram(plugin->playlist, item);
+ gm_log(plugin->debug_level, G_LOG_LEVEL_DEBUG, "in CURLGetURLNotify\n");
+ plugin->playlist = list_parse_qt(plugin->playlist, item, FALSE);
+ plugin->playlist = list_parse_qt2(plugin->playlist, item, FALSE);
+ plugin->playlist = list_parse_asx(plugin->playlist, item, FALSE);
+ plugin->playlist = list_parse_qml(plugin->playlist, item, FALSE);
+ plugin->playlist = list_parse_ram(plugin->playlist, item, FALSE);
}
// printf("item->play = %i\n", item->play);
// printf("item->src = %i\n", item->src);
// printf("calling open_location from CURLGetURLNotify\n");
- if (item->play) {
- send_signal_with_integer(plugin, item, "SetGUIState", PLAYING);
- open_location(plugin, item, TRUE);
- item->requested = TRUE;
- if (plugin->post_dom_events && plugin->id != NULL) {
- postDOMEvent(plugin->mInstance, plugin->id, "qt_loadedfirstframe");
- postDOMEvent(plugin->mInstance, plugin->id, "qt_canplay");
- postDOMEvent(plugin->mInstance, plugin->id, "qt_play");
+
+ if (item->playlist == FALSE) {
+ if (item != NULL && item->queuedtoplay == FALSE) {
+ if (!list_item_opened(plugin->playlist)) {
+ item = list_find_first_playable(plugin->playlist);
+ }
+ }
+ if (item != NULL) {
+ if (item->play == TRUE && item->opened == FALSE) {
+
+ open_location(plugin, item, TRUE);
+ if (plugin->post_dom_events && plugin->id != NULL) {
+ postDOMEvent(plugin->mInstance, plugin->id, "qt_loadedfirstframe");
+ postDOMEvent(plugin->mInstance, plugin->id, "qt_canplay");
+ postDOMEvent(plugin->mInstance, plugin->id, "qt_play");
+ }
+ }
}
} else {
- item = list_find_next_playable(plugin->playlist);
+ item = list_find_first_playable(plugin->playlist);
if (item != NULL) {
- item->controlid = id;
- g_strlcpy(item->path, path, 1024);
- item->playerready = ready;
- item->newwindow = newwindow;
- item->cancelled = FALSE;
- // printf("opening next playable items on the playlist\n");
- if (item->streaming) {
- open_location(plugin, item, FALSE);
- item->requested = TRUE;
- } else {
- if (!item->requested) {
- plugin->GetURLNotify(plugin->mInstance, item->src, NULL, item);
+ if (!item->streaming) {
+ if (item->requested == FALSE) {
+ gm_log(plugin->debug_level, G_LOG_LEVEL_INFO, "Getting URL '%s'",
+ item->src);
item->requested = TRUE;
+ plugin->GetURLNotify(plugin->mInstance, item->src, NULL, item);
}
+ } else {
+ if (!list_item_opened(plugin->playlist))
+ open_location(plugin, item, FALSE);
}
}
}
- g_free(path);
+
+ // fetch the next item on the playlist
+ fetch_item = list_find_next_playable_after_listitem(plugin->playlist, item);
+ if (fetch_item != NULL) {
+ if (!fetch_item->streaming) {
+ gm_log(plugin->debug_level, G_LOG_LEVEL_INFO, "Getting URL '%s'",
+ fetch_item->src);
+ fetch_item->requested = TRUE;
+ CURLGetURLNotify(fetch_item);
+ }
+ }
}
}
@@ -1593,8 +1547,8 @@ NPError CPlugin::GetURLNotify(NPP instance, const char *url, const char *target,
return NPN_GetURLNotify(instance, url, target, notifyData);
} else {
#ifdef HAVE_CURL
- printf("using curl to retrieve data from apple.com site\n");
- printf("quicktime_emulation = %i\n", quicktime_emulation);
+ gm_log(debug_level, G_LOG_LEVEL_DEBUG, "using curl to retrieve data from apple.com site\n");
+ gm_log(debug_level, G_LOG_LEVEL_DEBUG, "quicktime_emulation = %i\n", quicktime_emulation);
item = (ListItem *) notifyData;
// item = list_find(playlist, (gchar*)stream->url);
@@ -1611,7 +1565,7 @@ NPError CPlugin::GetURLNotify(NPP instance, const char *url, const char *target,
playlist = g_list_append(playlist, item);
notifyData = item;
} else {
- printf("item is null\nstream url %s\n", url);
+ gm_log(debug_level, G_LOG_LEVEL_DEBUG, "item is null\nstream url %s\n", url);
return -1;
}
} else {
@@ -1621,7 +1575,7 @@ NPError CPlugin::GetURLNotify(NPP instance, const char *url, const char *target,
}
if (item->cancelled) {
- printf("item has been cancelled\n");
+ gm_log(debug_level, G_LOG_LEVEL_DEBUG, "item has been cancelled\n");
return -1;
}
@@ -1637,7 +1591,7 @@ NPError CPlugin::GetURLNotify(NPP instance, const char *url, const char *target,
}
if (item->retrieved) {
- printf("item is already retrieved\n");
+ gm_log(debug_level, G_LOG_LEVEL_DEBUG, "item is already retrieved\n");
return -1;
}
@@ -1666,10 +1620,10 @@ NPError CPlugin::GetURLNotify(NPP instance, const char *url, const char *target,
// in the bin/components folder
class ScriptablePluginObjectBase:public NPObject {
public:
- ScriptablePluginObjectBase(NPP npp)
- :mNpp(npp) {
- } virtual ~ ScriptablePluginObjectBase() {
- }
+ ScriptablePluginObjectBase(NPP npp):mNpp(npp) {
+ };
+ virtual ~ ScriptablePluginObjectBase() {
+ };
// Virtual NPObject hooks called through this base class. Override
// as you see fit.
@@ -1826,9 +1780,9 @@ bool ScriptablePluginObjectBase::_RemoveProperty(NPObject * npobj, NPIdentifier
class ScriptablePluginObjectControls:public ScriptablePluginObjectBase {
public:
- ScriptablePluginObjectControls(NPP npp)
- :ScriptablePluginObjectBase(npp) {
- } virtual bool HasMethod(NPIdentifier name);
+ ScriptablePluginObjectControls(NPP npp):ScriptablePluginObjectBase(npp) {
+ };
+ virtual bool HasMethod(NPIdentifier name);
virtual bool Invoke(NPIdentifier name, const NPVariant * args,
uint32_t argCount, NPVariant * result);
virtual bool InvokeDefault(const NPVariant * args, uint32_t argCount, NPVariant * result);
@@ -1864,7 +1818,7 @@ bool ScriptablePluginObjectControls::Invoke(NPIdentifier name, const NPVariant *
{
CPlugin *pPlugin = (CPlugin *) mNpp->pdata;
if (pPlugin == NULL) {
- printf("Can't find plugin pointer\n");
+ gm_log(pPlugin->debug_level, G_LOG_LEVEL_DEBUG, "Can't find plugin pointer\n");
return PR_FALSE;
}
@@ -1889,7 +1843,11 @@ bool ScriptablePluginObjectControls::Invoke(NPIdentifier name, const NPVariant *
bool ScriptablePluginObjectControls::InvokeDefault(const NPVariant * args, uint32_t argCount,
NPVariant * result)
{
- printf("ScriptablePluginObject default method called!\n");
+ CPlugin *pPlugin = (CPlugin *) mNpp->pdata;
+ if (pPlugin == NULL) {
+ gm_log(pPlugin->debug_level, G_LOG_LEVEL_DEBUG,
+ "ScriptablePluginObjectControls default method called!\n");
+ }
STRINGZ_TO_NPVARIANT(strdup("default method return val"), *result);
@@ -1911,7 +1869,7 @@ bool ScriptablePluginObjectControls::GetProperty(NPIdentifier name, NPVariant *
CPlugin *pPlugin = (CPlugin *) mNpp->pdata;
if (pPlugin == NULL) {
- printf("Can't find plugin pointer\n");
+ gm_log(pPlugin->debug_level, G_LOG_LEVEL_DEBUG, "Can't find plugin pointer\n");
VOID_TO_NPVARIANT(*result);
return false;
}
@@ -1935,7 +1893,7 @@ bool ScriptablePluginObjectControls::SetProperty(NPIdentifier name, const NPVari
{
CPlugin *pPlugin = (CPlugin *) mNpp->pdata;
if (pPlugin == NULL) {
- printf("Can't find plugin pointer\n");
+ gm_log(pPlugin->debug_level, G_LOG_LEVEL_DEBUG, "Can't find plugin pointer\n");
return false;
}
@@ -1949,9 +1907,9 @@ bool ScriptablePluginObjectControls::SetProperty(NPIdentifier name, const NPVari
class ScriptablePluginObjectMedia:public ScriptablePluginObjectBase {
public:
- ScriptablePluginObjectMedia(NPP npp)
- :ScriptablePluginObjectBase(npp) {
- } virtual bool HasMethod(NPIdentifier name);
+ ScriptablePluginObjectMedia(NPP npp):ScriptablePluginObjectBase(npp) {
+ };
+ virtual bool HasMethod(NPIdentifier name);
virtual bool Invoke(NPIdentifier name, const NPVariant * args,
uint32_t argCount, NPVariant * result);
virtual bool InvokeDefault(const NPVariant * args, uint32_t argCount, NPVariant * result);
@@ -1985,7 +1943,7 @@ bool ScriptablePluginObjectMedia::Invoke(NPIdentifier name, const NPVariant * ar
int i;
if (pPlugin == NULL) {
- printf("Can't find plugin pointer\n");
+ gm_log(pPlugin->debug_level, G_LOG_LEVEL_DEBUG, "Can't find plugin pointer\n");
return PR_FALSE;
}
@@ -1996,15 +1954,15 @@ bool ScriptablePluginObjectMedia::Invoke(NPIdentifier name, const NPVariant * ar
arg = g_strdup(NPVARIANT_TO_STRING(args[0]).utf8characters);
#endif
- if (g_strcasecmp(arg, "title") == 0) {
+ if (g_ascii_strcasecmp(arg, "title") == 0) {
STRINGZ_TO_NPVARIANT(strdup
(request_string_value(pPlugin, pPlugin->lastopened, "GetTitle")),
*result);
- } else if (g_strcasecmp(arg, "uri") == 0) {
+ } else if (g_ascii_strcasecmp(arg, "uri") == 0) {
STRINGZ_TO_NPVARIANT(strdup
(request_string_value(pPlugin, pPlugin->lastopened, "GetURI")),
*result);
- } else if (g_strcasecmp(arg, "bitrate") == 0) {
+ } else if (g_ascii_strcasecmp(arg, "bitrate") == 0) {
pPlugin->GetBitrate(&i);
INT32_TO_NPVARIANT(i, *result);
} else {
@@ -2020,8 +1978,11 @@ bool ScriptablePluginObjectMedia::Invoke(NPIdentifier name, const NPVariant * ar
bool ScriptablePluginObjectMedia::InvokeDefault(const NPVariant * args, uint32_t argCount,
NPVariant * result)
{
- printf("ScriptablePluginObject default method called!\n");
-
+ CPlugin *pPlugin = (CPlugin *) mNpp->pdata;
+ if (pPlugin == NULL) {
+ gm_log(pPlugin->debug_level, G_LOG_LEVEL_DEBUG,
+ "ScriptablePluginObjectMedia default method called!\n");
+ }
STRINGZ_TO_NPVARIANT(strdup("default method return val"), *result);
return PR_TRUE;
@@ -2042,7 +2003,7 @@ bool ScriptablePluginObjectMedia::GetProperty(NPIdentifier name, NPVariant * res
CPlugin *pPlugin = (CPlugin *) mNpp->pdata;
if (pPlugin == NULL) {
- printf("Can't find plugin pointer\n");
+ gm_log(pPlugin->debug_level, G_LOG_LEVEL_DEBUG, "Can't find plugin pointer\n");
VOID_TO_NPVARIANT(*result);
return false;
}
@@ -2061,7 +2022,7 @@ bool ScriptablePluginObjectMedia::SetProperty(NPIdentifier name, const NPVariant
{
CPlugin *pPlugin = (CPlugin *) mNpp->pdata;
if (pPlugin == NULL) {
- printf("Can't find plugin pointer\n");
+ gm_log(pPlugin->debug_level, G_LOG_LEVEL_DEBUG, "Can't find plugin pointer\n");
return false;
}
@@ -2074,9 +2035,9 @@ bool ScriptablePluginObjectMedia::SetProperty(NPIdentifier name, const NPVariant
class ScriptablePluginObjectSettings:public ScriptablePluginObjectBase {
public:
- ScriptablePluginObjectSettings(NPP npp)
- :ScriptablePluginObjectBase(npp) {
- } virtual bool HasMethod(NPIdentifier name);
+ ScriptablePluginObjectSettings(NPP npp):ScriptablePluginObjectBase(npp) {
+ };
+ virtual bool HasMethod(NPIdentifier name);
virtual bool Invoke(NPIdentifier name, const NPVariant * args,
uint32_t argCount, NPVariant * result);
virtual bool InvokeDefault(const NPVariant * args, uint32_t argCount, NPVariant * result);
@@ -2104,7 +2065,7 @@ bool ScriptablePluginObjectSettings::Invoke(NPIdentifier name, const NPVariant *
{
CPlugin *pPlugin = (CPlugin *) mNpp->pdata;
if (pPlugin == NULL) {
- printf("Can't find plugin pointer\n");
+ gm_log(pPlugin->debug_level, G_LOG_LEVEL_DEBUG, "Can't find plugin pointer\n");
return PR_FALSE;
}
@@ -2114,8 +2075,11 @@ bool ScriptablePluginObjectSettings::Invoke(NPIdentifier name, const NPVariant *
bool ScriptablePluginObjectSettings::InvokeDefault(const NPVariant * args, uint32_t argCount,
NPVariant * result)
{
- printf("ScriptablePluginObject default method called!\n");
-
+ CPlugin *pPlugin = (CPlugin *) mNpp->pdata;
+ if (pPlugin == NULL) {
+ gm_log(pPlugin->debug_level, G_LOG_LEVEL_DEBUG,
+ "ScriptablePluginObjectSettings default method called!\n");
+ }
STRINGZ_TO_NPVARIANT(strdup("default method return val"), *result);
return PR_TRUE;
@@ -2136,7 +2100,7 @@ bool ScriptablePluginObjectSettings::GetProperty(NPIdentifier name, NPVariant *
CPlugin *pPlugin = (CPlugin *) mNpp->pdata;
if (pPlugin == NULL) {
- printf("Can't find plugin pointer\n");
+ gm_log(pPlugin->debug_level, G_LOG_LEVEL_DEBUG, "Can't find plugin pointer\n");
VOID_TO_NPVARIANT(*result);
return false;
}
@@ -2155,7 +2119,7 @@ bool ScriptablePluginObjectSettings::SetProperty(NPIdentifier name, const NPVari
{
CPlugin *pPlugin = (CPlugin *) mNpp->pdata;
if (pPlugin == NULL) {
- printf("Can't find plugin pointer\n");
+ gm_log(pPlugin->debug_level, G_LOG_LEVEL_DEBUG, "Can't find plugin pointer\n");
return false;
}
@@ -2173,9 +2137,9 @@ bool ScriptablePluginObjectSettings::SetProperty(NPIdentifier name, const NPVari
class ScriptablePluginObjectError:public ScriptablePluginObjectBase {
public:
- ScriptablePluginObjectError(NPP npp)
- :ScriptablePluginObjectBase(npp) {
- } virtual bool HasMethod(NPIdentifier name);
+ ScriptablePluginObjectError(NPP npp):ScriptablePluginObjectBase(npp) {
+ };
+ virtual bool HasMethod(NPIdentifier name);
virtual bool Invoke(NPIdentifier name, const NPVariant * args,
uint32_t argCount, NPVariant * result);
virtual bool InvokeDefault(const NPVariant * args, uint32_t argCount, NPVariant * result);
@@ -2202,7 +2166,7 @@ bool ScriptablePluginObjectError::Invoke(NPIdentifier name, const NPVariant * ar
{
CPlugin *pPlugin = (CPlugin *) mNpp->pdata;
if (pPlugin == NULL) {
- printf("Can't find plugin pointer\n");
+ gm_log(pPlugin->debug_level, G_LOG_LEVEL_DEBUG, "Can't find plugin pointer\n");
return PR_FALSE;
}
@@ -2212,8 +2176,11 @@ bool ScriptablePluginObjectError::Invoke(NPIdentifier name, const NPVariant * ar
bool ScriptablePluginObjectError::InvokeDefault(const NPVariant * args, uint32_t argCount,
NPVariant * result)
{
- printf("ScriptablePluginObject default method called!\n");
-
+ CPlugin *pPlugin = (CPlugin *) mNpp->pdata;
+ if (pPlugin == NULL) {
+ gm_log(pPlugin->debug_level, G_LOG_LEVEL_DEBUG,
+ "ScriptablePluginObjectError default method called!\n");
+ }
STRINGZ_TO_NPVARIANT(strdup("default method return val"), *result);
return PR_TRUE;
@@ -2232,7 +2199,7 @@ bool ScriptablePluginObjectError::GetProperty(NPIdentifier name, NPVariant * res
{
CPlugin *pPlugin = (CPlugin *) mNpp->pdata;
if (pPlugin == NULL) {
- printf("Can't find plugin pointer\n");
+ gm_log(pPlugin->debug_level, G_LOG_LEVEL_DEBUG, "Can't find plugin pointer\n");
VOID_TO_NPVARIANT(*result);
return false;
}
@@ -2250,7 +2217,7 @@ bool ScriptablePluginObjectError::SetProperty(NPIdentifier name, const NPVariant
{
CPlugin *pPlugin = (CPlugin *) mNpp->pdata;
if (pPlugin == NULL) {
- printf("Can't find plugin pointer\n");
+ gm_log(pPlugin->debug_level, G_LOG_LEVEL_DEBUG, "Can't find plugin pointer\n");
return false;
}
@@ -2269,9 +2236,9 @@ bool ScriptablePluginObjectError::SetProperty(NPIdentifier name, const NPVariant
class ScriptablePluginObject:public ScriptablePluginObjectBase {
public:
- ScriptablePluginObject(NPP npp)
- :ScriptablePluginObjectBase(npp) {
- } virtual bool HasMethod(NPIdentifier name);
+ ScriptablePluginObject(NPP npp):ScriptablePluginObjectBase(npp) {
+ };
+ virtual bool HasMethod(NPIdentifier name);
virtual bool Invoke(NPIdentifier name, const NPVariant * args,
uint32_t argCount, NPVariant * result);
virtual bool InvokeDefault(const NPVariant * args, uint32_t argCount, NPVariant * result);
@@ -2347,7 +2314,7 @@ bool ScriptablePluginObject::Invoke(NPIdentifier name, const NPVariant * args,
CPlugin *pPlugin = (CPlugin *) mNpp->pdata;
if (pPlugin == NULL) {
- printf("Can't find plugin pointer\n");
+ gm_log(pPlugin->debug_level, G_LOG_LEVEL_DEBUG, "Can't find plugin pointer\n");
return PR_FALSE;
}
@@ -2557,7 +2524,11 @@ bool ScriptablePluginObject::Invoke(NPIdentifier name, const NPVariant * args,
bool ScriptablePluginObject::InvokeDefault(const NPVariant * args, uint32_t argCount,
NPVariant * result)
{
- printf("ScriptablePluginObject default method called!\n");
+ CPlugin *pPlugin = (CPlugin *) mNpp->pdata;
+ if (pPlugin == NULL) {
+ gm_log(pPlugin->debug_level, G_LOG_LEVEL_DEBUG,
+ "ScriptablePluginObject default method called!\n");
+ }
STRINGZ_TO_NPVARIANT(strdup("default method return val"), *result);
@@ -2595,7 +2566,7 @@ bool ScriptablePluginObject::GetProperty(NPIdentifier name, NPVariant * result)
CPlugin *pPlugin = (CPlugin *) mNpp->pdata;
if (pPlugin == NULL) {
- printf("Can't find plugin pointer\n");
+ gm_log(pPlugin->debug_level, G_LOG_LEVEL_DEBUG, "Can't find plugin pointer\n");
VOID_TO_NPVARIANT(*result);
return false;
}
@@ -2606,7 +2577,7 @@ bool ScriptablePluginObject::GetProperty(NPIdentifier name, NPVariant * result)
STRINGZ_TO_NPVARIANT(filename, *result);
} else {
STRINGZ_TO_NPVARIANT(strdup(""), *result);
- }
+ }
return true;
}
@@ -2704,7 +2675,7 @@ bool ScriptablePluginObject::SetProperty(NPIdentifier name, const NPVariant * va
{
CPlugin *pPlugin = (CPlugin *) mNpp->pdata;
if (pPlugin == NULL) {
- printf("Can't find plugin pointer\n");
+ gm_log(pPlugin->debug_level, G_LOG_LEVEL_DEBUG, "Can't find plugin pointer\n");
return false;
}
diff --git a/src/plugin.h b/src/plugin.h
index e6121b6..bc17164 100644
--- a/src/plugin.h
+++ b/src/plugin.h
@@ -93,6 +93,8 @@ typedef enum {
void postDOMEvent(NPP mInstance, const gchar * id, const gchar * event);
void postPlayStateChange(NPP mInstance, const gint state);
+const gchar *NPErrorToString(NPError error);
+const gchar *NPReasonToString(NPReason reason);
class CPlugin {
private:
diff --git a/src/plugin_dbus.cpp b/src/plugin_dbus.cpp
index 4aa6502..6de2438 100644
--- a/src/plugin_dbus.cpp
+++ b/src/plugin_dbus.cpp
@@ -50,6 +50,7 @@ static DBusHandlerResult filter_func(DBusConnection * connection,
gchar *path;
CPlugin *instance;
ListItem *item = NULL;
+ ListItem *fetch_item = NULL;
gchar *arg[10];
gint i;
GRand *rand;
@@ -120,7 +121,7 @@ static DBusHandlerResult filter_func(DBusConnection * connection,
if (g_ascii_strcasecmp(dbus_message_get_member(message), "ListDump") == 0) {
- printf("playlist:\n");
+ gm_log(instance->debug_level, G_LOG_LEVEL_INFO, "playlist:\n");
list_dump(instance->playlist);
return DBUS_HANDLER_RESULT_HANDLED;
@@ -129,19 +130,23 @@ static DBusHandlerResult filter_func(DBusConnection * connection,
if (g_ascii_strcasecmp(dbus_message_get_member(message), "RequestById") == 0) {
dbus_error_init(&error);
if (dbus_message_get_args(message, &error, DBUS_TYPE_STRING, &s, DBUS_TYPE_INVALID)) {
- printf("Got id %s\n", s);
+ gm_log(instance->debug_level, G_LOG_LEVEL_INFO, "Got id %s\n", s);
item = list_find_by_id(instance->playlist, (gint) g_strtod(s, NULL));
if (item != NULL) {
item->play = TRUE;
item->cancelled = FALSE;
item->retrieved = FALSE;
- printf("id %s has url of %s\n", s, item->src);
- printf("id %s has newwindow = %i\n", s, item->newwindow);
+ gm_log(instance->debug_level, G_LOG_LEVEL_INFO, "id %s has url of %s\n", s,
+ item->src);
+ gm_log(instance->debug_level, G_LOG_LEVEL_INFO,
+ "id %s has newwindow = %i\n", s, item->newwindow);
if (item->newwindow == 0) {
send_signal_with_boolean(instance, item, "SetShowControls", TRUE);
if (item->streaming) {
send_signal_with_string(instance, item, "Open", item->src);
} else {
+ item->requested = TRUE;
+ item->queuedtoplay = TRUE;
instance->GetURLNotify(instance->mInstance, item->src, NULL, item);
}
} else {
@@ -172,12 +177,16 @@ static DBusHandlerResult filter_func(DBusConnection * connection,
if (g_spawn_async(NULL, arg, NULL,
G_SPAWN_SEARCH_PATH, NULL, NULL, NULL,
&gerror) == FALSE) {
- printf("Unable to launch %s: %s\n", app_name, gerror->message);
+ gm_log(instance->debug_level, G_LOG_LEVEL_INFO,
+ "Unable to launch %s: %s\n", app_name, gerror->message);
g_error_free(gerror);
gerror = NULL;
}
g_free(app_name);
- printf("requesting %s \n", item->src);
+ gm_log(instance->debug_level, G_LOG_LEVEL_INFO, "requesting %s \n",
+ item->src);
+ item->requested = TRUE;
+ item->queuedtoplay = TRUE;
instance->GetURLNotify(instance->mInstance, item->src, NULL, item);
}
instance->lastopened->played = TRUE;
@@ -218,9 +227,14 @@ static DBusHandlerResult filter_func(DBusConnection * connection,
}
}
- //printf("next item src = %s\n", item->src);
- //printf("next item local = %s\n", item->local);
- //printf("next item streaming = %i\n", item->streaming);
+ if (item != NULL) {
+ printf("next item src = %s\n", item->src);
+ printf("next item local = %s\n", item->local);
+ printf("next item streaming = %i\n", item->streaming);
+ } else {
+ printf("do not know what the next item is\n");
+ list_dump(instance->playlist);
+ }
if (item != NULL) {
/*
@@ -249,11 +263,35 @@ static DBusHandlerResult filter_func(DBusConnection * connection,
item->cancelled = FALSE;
if (item->retrieved) {
open_location(instance, item, TRUE);
+ fetch_item =
+ list_find_next_playable_after_listitem(instance->playlist, item);
+ if (fetch_item != NULL) {
+ if (!fetch_item->streaming) {
+ gm_log(instance->debug_level, G_LOG_LEVEL_INFO,
+ "Getting URL '%s'", fetch_item->src);
+ fetch_item->requested = TRUE;
+ instance->GetURLNotify(instance->mInstance, fetch_item->src,
+ NULL, fetch_item);
+ }
+ }
} else {
+ item->requested = TRUE;
+ item->queuedtoplay = TRUE;
instance->GetURLNotify(instance->mInstance, item->src, NULL, item);
}
} else {
open_location(instance, item, FALSE);
+ fetch_item =
+ list_find_next_playable_after_listitem(instance->playlist, item);
+ if (fetch_item != NULL) {
+ if (!fetch_item->streaming) {
+ gm_log(instance->debug_level, G_LOG_LEVEL_INFO, "Getting URL '%s'",
+ fetch_item->src);
+ fetch_item->requested = TRUE;
+ instance->GetURLNotify(instance->mInstance, fetch_item->src, NULL,
+ fetch_item);
+ }
+ }
}
}
return DBUS_HANDLER_RESULT_HANDLED;
@@ -271,21 +309,25 @@ static DBusHandlerResult filter_func(DBusConnection * connection,
NPN_GetURL(instance->mInstance, instance->event_mediacomplete, NULL);
}
postPlayStateChange(instance->mInstance, STATE_MEDIAENDED);
+ return DBUS_HANDLER_RESULT_HANDLED;
}
if (g_ascii_strcasecmp(s, "MouseClicked") == 0) {
if (instance->event_mouseclicked != NULL) {
NPN_GetURL(instance->mInstance, instance->event_mouseclicked, NULL);
}
+ return DBUS_HANDLER_RESULT_HANDLED;
}
if (g_ascii_strcasecmp(s, "EnterWindow") == 0) {
if (instance->event_enterwindow != NULL) {
NPN_GetURL(instance->mInstance, instance->event_enterwindow, NULL);
}
+ return DBUS_HANDLER_RESULT_HANDLED;
}
if (g_ascii_strcasecmp(s, "LeaveWindow") == 0) {
if (instance->event_leavewindow != NULL) {
NPN_GetURL(instance->mInstance, instance->event_leavewindow, NULL);
}
+ return DBUS_HANDLER_RESULT_HANDLED;
}
if (g_ascii_strcasecmp(s, "MouseDown") == 0) {
if (instance->event_mousedown != NULL) {
@@ -293,6 +335,7 @@ static DBusHandlerResult filter_func(DBusConnection * connection,
NPN_GetURL(instance->mInstance, tmp, NULL);
g_free(tmp);
}
+ return DBUS_HANDLER_RESULT_HANDLED;
}
if (g_ascii_strcasecmp(s, "MouseUp") == 0) {
if (instance->event_mouseup != NULL) {
@@ -300,36 +343,43 @@ static DBusHandlerResult filter_func(DBusConnection * connection,
NPN_GetURL(instance->mInstance, tmp, NULL);
g_free(tmp);
}
+ return DBUS_HANDLER_RESULT_HANDLED;
}
if (g_ascii_strcasecmp(s, "TimeChanged") == 0) {
if (instance->post_dom_events && instance->id != NULL) {
postDOMEvent(instance->mInstance, instance->id, "qt_timechanged");
}
+ return DBUS_HANDLER_RESULT_HANDLED;
}
if (g_ascii_strcasecmp(s, "Ended") == 0) {
if (instance->post_dom_events && instance->id != NULL) {
postDOMEvent(instance->mInstance, instance->id, "qt_ended");
}
+ return DBUS_HANDLER_RESULT_HANDLED;
}
if (g_ascii_strcasecmp(s, "MediaStopped") == 0) {
if (instance->post_dom_events && instance->id != NULL) {
postDOMEvent(instance->mInstance, instance->id, "qt_ended");
}
postPlayStateChange(instance->mInstance, STATE_STOPPED);
+ return DBUS_HANDLER_RESULT_HANDLED;
}
if (g_ascii_strcasecmp(s, "MediaPlaying") == 0) {
if (instance->post_dom_events && instance->id != NULL) {
postDOMEvent(instance->mInstance, instance->id, "qt_play");
}
postPlayStateChange(instance->mInstance, STATE_PLAYING);
+ return DBUS_HANDLER_RESULT_HANDLED;
}
if (g_ascii_strcasecmp(s, "MediaPaused") == 0) {
if (instance->post_dom_events && instance->id != NULL) {
postDOMEvent(instance->mInstance, instance->id, "qt_pause");
}
postPlayStateChange(instance->mInstance, STATE_PAUSED);
+ return DBUS_HANDLER_RESULT_HANDLED;
}
}
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
}
} else {
@@ -352,7 +402,8 @@ DBusConnection *dbus_hookup(CPlugin * instance)
dbus_bus_add_match(connection, "type='signal',interface='com.gecko.mediaplayer'", NULL);
dbus_connection_add_filter(connection, filter_func, instance, NULL);
- printf("DBUS connection created\nListening to path %s\n", instance->path);
+ gm_log(instance->debug_level, G_LOG_LEVEL_INFO,
+ "DBUS connection created\nListening to path %s\n", instance->path);
return connection;
}
@@ -396,6 +447,10 @@ void open_location(CPlugin * instance, ListItem * item, gboolean uselocal)
file = g_strdup(item->src);
}
+ gm_log(instance->debug_level, G_LOG_LEVEL_INFO,
+ "Opening %s with launch\nitem->hrefid = %i item->src = %s", file, item->hrefid,
+ item->src);
+
//printf("launching gnome-mplayer from Open with id = %i\n",instance->controlid);
app_name = NULL;
if (instance->player_backend != NULL) {
@@ -458,7 +513,8 @@ void open_location(CPlugin * instance, ListItem * item, gboolean uselocal)
path = instance->path;
}
- printf("Sending Open %s to connection %p\nitem->hrefid = %i item->src = %s\n", file,
+ gm_log(instance->debug_level, G_LOG_LEVEL_INFO,
+ "Sending Open %s to connection %p\nitem->hrefid = %i item->src = %s\n", file,
instance->connection, item->hrefid, item->src);
if (item->hrefid == 0) {
if (item->streaming) {
@@ -487,7 +543,8 @@ void open_location(CPlugin * instance, ListItem * item, gboolean uselocal)
item->opened = TRUE;
instance->lastopened = item;
} else {
- printf("Item already opened before\n");
+ gm_log(instance->debug_level, G_LOG_LEVEL_INFO, "Item '%s' already opened before",
+ item->src);
}
}
@@ -588,9 +645,10 @@ void send_signal_with_string(CPlugin * instance, ListItem * item, const gchar *
const char *localstr;
gchar *path;
- printf("Sending %s to connection %p\n", signal, instance->connection);
if (instance == NULL)
return;
+// gm_log(instance->debug_level, G_LOG_LEVEL_INFO, "Sending %s to connection %p\n", signal,
+// instance->connection);
if (instance->console != NULL) {
path = g_strdup_printf("/console/%s", instance->console);
@@ -620,10 +678,12 @@ void send_signal_with_double(CPlugin * instance, ListItem * item, const gchar *
const char *localsignal;
gchar *path;
- //printf("Sending %s to connection %p\n", signal, instance->connection);
if (instance == NULL)
return;
+// gm_log(instance->debug_level, G_LOG_LEVEL_INFO, "Sending %s to connection %p\n", signal,
+// instance->connection);
+
if (instance->console != NULL) {
path = g_strdup_printf("/console/%s", instance->console);
} else {
@@ -741,7 +801,7 @@ gboolean request_boolean_value(CPlugin * instance, ListItem * item, const gchar
replymessage =
dbus_connection_send_with_reply_and_block(instance->connection, message, -1, &error);
if (dbus_error_is_set(&error)) {
- printf("Error message = %s\n", error.message);
+ gm_log(instance->debug_level, G_LOG_LEVEL_INFO, "Error message = %s\n", error.message);
}
dbus_message_get_args(replymessage, &error, DBUS_TYPE_BOOLEAN, &result, DBUS_TYPE_INVALID);
dbus_message_unref(message);
@@ -784,7 +844,7 @@ gdouble request_double_value(CPlugin * instance, ListItem * item, const gchar *
replymessage =
dbus_connection_send_with_reply_and_block(instance->connection, message, -1, &error);
if (dbus_error_is_set(&error)) {
- printf("Error message = %s\n", error.message);
+ gm_log(instance->debug_level, G_LOG_LEVEL_INFO, "Error message = %s\n", error.message);
}
dbus_message_get_args(replymessage, &error, DBUS_TYPE_DOUBLE, &result, DBUS_TYPE_INVALID);
dbus_message_unref(message);
@@ -828,7 +888,7 @@ gint request_int_value(CPlugin * instance, ListItem * item, const gchar * member
replymessage =
dbus_connection_send_with_reply_and_block(instance->connection, message, -1, &error);
if (dbus_error_is_set(&error)) {
- printf("Error message = %s\n", error.message);
+ gm_log(instance->debug_level, G_LOG_LEVEL_INFO, "Error message = %s\n", error.message);
}
dbus_message_get_args(replymessage, &error, DBUS_TYPE_INT32, &result, DBUS_TYPE_INVALID);
dbus_message_unref(message);
@@ -871,7 +931,7 @@ gchar *request_string_value(CPlugin * instance, ListItem * item, const gchar * m
replymessage =
dbus_connection_send_with_reply_and_block(instance->connection, message, -1, &error);
if (dbus_error_is_set(&error)) {
- printf("Error message = %s\n", error.message);
+ gm_log(instance->debug_level, G_LOG_LEVEL_INFO, "Error message = %s\n", error.message);
}
dbus_message_get_args(replymessage, &error, DBUS_TYPE_STRING, &result, DBUS_TYPE_INVALID);
dbus_message_unref(message);
@@ -953,7 +1013,7 @@ gint request_bitrate(CPlugin * instance, ListItem * item, gchar * name)
replymessage =
dbus_connection_send_with_reply_and_block(instance->connection, message, -1, &error);
if (dbus_error_is_set(&error)) {
- printf("Error message = %s\n", error.message);
+ gm_log(instance->debug_level, G_LOG_LEVEL_INFO, "Error message = %s\n", error.message);
}
if (replymessage != NULL) {
dbus_message_get_args(replymessage, &error, DBUS_TYPE_INT32, &result,
diff --git a/src/plugin_list.cpp b/src/plugin_list.cpp
index ee5b245..5bfca6c 100644
--- a/src/plugin_list.cpp
+++ b/src/plugin_list.cpp
@@ -40,6 +40,7 @@ gint asx_loop;
gint entry_id = 0;
GList *parser_list;
ListItem *parser_item;
+gboolean global_detect_only;
extern gint streaming(gchar * url);
ListItem *list_find(GList * list, gchar * url)
@@ -55,11 +56,6 @@ ListItem *list_find(GList * list, gchar * url)
// printf("found %s at %p\n",url,item);
return item;
}
-// if (g_strrstr(url, item->src) != NULL && item->play == TRUE) {
-// // printf("found %s at %p\n",url,item);
-// return item;
-// }
-
}
}
@@ -176,6 +172,62 @@ ListItem *list_find_next_playable(GList * list)
return NULL;
}
+ListItem *list_find_next_playable_after_listitem(GList * list, ListItem * find)
+{
+ ListItem *item;
+ GList *iter;
+ ListItem *found = NULL;
+
+ if (list != NULL && find != NULL) {
+ for (iter = g_list_last(list); iter != NULL; iter = g_list_previous(iter)) {
+ item = (ListItem *) iter->data;
+ if (item != NULL) {
+ if (g_ascii_strcasecmp(find->src, item->src) == 0) {
+ return found;
+ }
+ if (item->played == FALSE && item->play == TRUE) {
+ found = item;
+ }
+ }
+ }
+ }
+ return NULL;
+}
+
+ListItem *list_find_first_playable(GList * list)
+{
+ ListItem *item;
+ GList *iter;
+
+ for (iter = list; iter != NULL; iter = g_list_next(iter)) {
+ item = (ListItem *) iter->data;
+ if (item != NULL) {
+ if (item->play == TRUE) {
+ return item;
+ }
+ }
+ }
+ return NULL;
+}
+
+gboolean list_item_opened(GList * list)
+{
+ ListItem *item;
+ GList *iter;
+
+ for (iter = list; iter != NULL; iter = g_list_next(iter)) {
+ item = (ListItem *) iter->data;
+ if (item != NULL) {
+ if (item->opened == TRUE) {
+ return TRUE;
+ }
+ }
+ }
+ return FALSE;
+}
+
+
+
void list_qualify_url(GList * list, gchar * page_url)
{
ListItem *item;
@@ -230,34 +282,43 @@ void list_dump(GList * list)
{
ListItem *item;
GList *iter;
+ gint count = 1;
if (list != NULL) {
for (iter = list; iter != NULL; iter = g_list_next(iter)) {
item = (ListItem *) iter->data;
if (item != NULL) {
- printf("Item \n");
- printf("src = %s\n", item->src);
- printf("local = %s\n", item->local);
- printf("id = %i\n", item->id);
- printf("hrefid = %i\n", item->hrefid);
- printf("play = %i\n", item->play);
- printf("played = %i\n", item->played);
- printf("path = %s\n", item->path);
- printf("controlid = %i\n", item->controlid);
- printf("playerready = %i\n", item->playerready);
- printf("newwindow = %i\n", item->newwindow);
- printf("cancelled = %i\n", item->cancelled);
- printf("streaming = %i\n", item->streaming);
- printf("loop = %i\n", item->loop);
- printf("loopcount = %i\n", item->loopcount);
- printf("plugin = %p\n", item->plugin);
+ gm_log(TRUE, G_LOG_LEVEL_INFO, "----- Item %i -----", count++);
+ gm_log(TRUE, G_LOG_LEVEL_INFO, "src = %s", item->src);
+ gm_log(TRUE, G_LOG_LEVEL_INFO, "local = %s", item->local);
+ gm_log(TRUE, G_LOG_LEVEL_INFO, "id = %i", item->id);
+ gm_log(TRUE, G_LOG_LEVEL_INFO, "localsize = %i", item->localsize);
+ gm_log(TRUE, G_LOG_LEVEL_INFO, "lastsize = %i", item->lastsize);
+ gm_log(TRUE, G_LOG_LEVEL_INFO, "hrefid = %i", item->hrefid);
+ gm_log(TRUE, G_LOG_LEVEL_INFO, "requested = %i", item->requested);
+ gm_log(TRUE, G_LOG_LEVEL_INFO, "retrieved = %i", item->retrieved);
+ gm_log(TRUE, G_LOG_LEVEL_INFO, "cancelled = %i", item->cancelled);
+ gm_log(TRUE, G_LOG_LEVEL_INFO, "streaming = %i", item->streaming);
+ gm_log(TRUE, G_LOG_LEVEL_INFO, "opened = %i", item->opened);
+ gm_log(TRUE, G_LOG_LEVEL_INFO, "oktoplay = %i", item->oktoplay);
+ gm_log(TRUE, G_LOG_LEVEL_INFO, "queuedtoplay = %i", item->queuedtoplay);
+ gm_log(TRUE, G_LOG_LEVEL_INFO, "play = %i", item->play);
+ gm_log(TRUE, G_LOG_LEVEL_INFO, "played = %i", item->played);
+ gm_log(TRUE, G_LOG_LEVEL_INFO, "playlist = %i", item->playlist);
+ gm_log(TRUE, G_LOG_LEVEL_INFO, "path = %s", item->path);
+ gm_log(TRUE, G_LOG_LEVEL_INFO, "controlid = %i", item->controlid);
+ gm_log(TRUE, G_LOG_LEVEL_INFO, "playerready = %i", item->playerready);
+ gm_log(TRUE, G_LOG_LEVEL_INFO, "newwindow = %i", item->newwindow);
+ gm_log(TRUE, G_LOG_LEVEL_INFO, "loop = %i", item->loop);
+ gm_log(TRUE, G_LOG_LEVEL_INFO, "loopcount = %i", item->loopcount);
+ gm_log(TRUE, G_LOG_LEVEL_INFO, "plugin = %p", item->plugin);
}
}
}
}
-GList *list_parse_qt(GList * list, ListItem * item)
+GList *list_parse_qt(GList * list, ListItem * item, gboolean detect_only)
{
ListItem *newitem;
gchar *data;
@@ -271,14 +332,14 @@ GList *list_parse_qt(GList * list, ListItem * item)
unsigned int code = 0; // some value about the URL
gboolean added = FALSE;
- printf("Entering list_parse_qt localsize = %i\n", item->localsize);
+ // printf("Entering list_parse_qt localsize = %i\n", item->localsize);
if (item->localsize < (16 * 1024)) {
if (g_file_get_contents(item->local, &data, &datalen, NULL)) {
//printf("read %i bytes from %s\n",datalen, item->local);
p = (gchar *) memmem_compat(data, datalen, "rmda", 4);
if (p == NULL) {
- printf("unable to find rmda in %s\n", item->local);
+ gm_log(TRUE, G_LOG_LEVEL_DEBUG, "unable to find rmda in %s", item->local);
return list;
} else {
if (datalen > 4) {
@@ -320,19 +381,21 @@ GList *list_parse_qt(GList * list, ListItem * item)
if (code == 163 || code == 165 || code == 167
|| code == (unsigned int) -93
|| code == (unsigned int) -91 || code == (unsigned int) -89) {
- printf("Skipped URL: %s\n", rdrf);
+ gm_log(TRUE, G_LOG_LEVEL_INFO, "Skipped URL: %s\n", rdrf);
} else {
if (list_find(list, url) == NULL && strlen(rdrf) > 0) {
- item->play = FALSE;
- newitem = g_new0(ListItem, 1);
- g_strlcpy(newitem->src, url, 1024);
- // newitem->streaming = streaming(newitem->src);
- newitem->play = TRUE;
- newitem->id = item->id;
- newitem->controlid = item->controlid;
- g_strlcpy(newitem->path, item->path, 1024);
- item->id = -1;
- list = g_list_append(list, newitem);
+ if (!detect_only) {
+ item->play = FALSE;
+ newitem = g_new0(ListItem, 1);
+ g_strlcpy(newitem->src, url, 1024);
+ // newitem->streaming = streaming(newitem->src);
+ newitem->play = TRUE;
+ newitem->id = item->id;
+ newitem->controlid = item->controlid;
+ g_strlcpy(newitem->path, item->path, 1024);
+ item->id = -1;
+ list = g_list_append(list, newitem);
+ }
added = TRUE;
}
}
@@ -362,12 +425,15 @@ GList *list_parse_qt(GList * list, ListItem * item)
// so skip parsing it.
//printf("file not parsed > 16K actual size is %i\n",item->localsize);
}
- printf("Exiting list_parse_qt\n");
+ // printf("Exiting list_parse_qt\n");
+ if (added) {
+ item->playlist = TRUE;
+ }
return list;
}
-GList *list_parse_qt2(GList * list, ListItem * item)
+GList *list_parse_qt2(GList * list, ListItem * item, gboolean detect_only)
{
ListItem *newitem;
gchar *data;
@@ -378,14 +444,14 @@ GList *list_parse_qt2(GList * list, ListItem * item)
gchar *urlptr;
gboolean added = FALSE;
- printf("Entering list_parse_qt2 localsize = %i\n", item->localsize);
+ // printf("Entering list_parse_qt2 localsize = %i\n", item->localsize);
if (item->localsize < (256 * 1024)) {
if (g_file_get_contents(item->local, &data, &datalen, NULL)) {
//printf("read %i bytes from %s\n",datalen, item->local);
p = (gchar *) memmem_compat(data, datalen, "mmdr", 4);
if (p == NULL) {
- printf("unable to find mmdr in %s\n", item->local);
+ gm_log(TRUE, G_LOG_LEVEL_DEBUG, "unable to find mmdr in %s", item->local);
return list;
} else {
while (p != NULL && !added) {
@@ -407,16 +473,18 @@ GList *list_parse_qt2(GList * list, ListItem * item)
}
if (list_find(list, url) == NULL) {
- item->play = FALSE;
- newitem = g_new0(ListItem, 1);
- g_strlcpy(newitem->src, url, 1024);
- // newitem->streaming = streaming(newitem->src);
- newitem->play = TRUE;
- newitem->id = item->id;
- newitem->controlid = item->controlid;
- g_strlcpy(newitem->path, item->path, 1024);
- item->id = -1;
- list = g_list_append(list, newitem);
+ if (!detect_only) {
+ item->play = FALSE;
+ newitem = g_new0(ListItem, 1);
+ g_strlcpy(newitem->src, url, 1024);
+ // newitem->streaming = streaming(newitem->src);
+ newitem->play = TRUE;
+ newitem->id = item->id;
+ newitem->controlid = item->controlid;
+ g_strlcpy(newitem->path, item->path, 1024);
+ item->id = -1;
+ list = g_list_append(list, newitem);
+ }
added = TRUE;
}
p = (gchar *) memmem_compat(urlptr, datalen - (urlptr - data), "mmdr", 4);
@@ -436,7 +504,10 @@ GList *list_parse_qt2(GList * list, ListItem * item)
// so skip parsing it.
//printf("file not parsed > 256K actual size is %i\n",item->localsize);
}
- printf("Exiting list_parse_qt2\n");
+ // printf("Exiting list_parse_qt2\n");
+ if (added) {
+ item->playlist = TRUE;
+ }
return list;
}
@@ -494,18 +565,19 @@ void unreplace_amp(gchar * data)
}
-GList *list_parse_asx(GList * list, ListItem * item)
+GList *list_parse_asx(GList * list, ListItem * item, gboolean detect_only)
{
GMarkupParseContext *context;
gchar *data;
gsize datalen;
- printf("Entering list_parse_asx localsize = %i\n", item->localsize);
+ // printf("Entering list_parse_asx localsize = %i\n", item->localsize);
if (item->localsize < (16 * 1024)) {
if (g_file_get_contents(item->local, &data, &datalen, NULL)) {
parser_list = list;
parser_item = item;
+ global_detect_only = detect_only;
asx_loop = 0;
strip_unicode(data, datalen);
replace_amp(data);
@@ -513,12 +585,13 @@ GList *list_parse_asx(GList * list, ListItem * item)
context = g_markup_parse_context_new(&asx_parser, (GMarkupParseFlags) 0, data, NULL);
g_markup_parse_context_parse(context, data, datalen, NULL);
g_markup_parse_context_free(context);
+ global_detect_only = FALSE;
parser_item = NULL;
parser_list = NULL;
}
// list_dump(list);
}
- printf("Exiting list_parse_asx\n");
+ // printf("Exiting list_parse_asx\n");
return list;
}
@@ -541,45 +614,48 @@ asx_start_element(GMarkupParseContext * context,
if (list_find(parser_list, (gchar *) attribute_values[i])
== NULL) {
parser_item->play = FALSE;
- newitem = g_new0(ListItem, 1);
- value = g_strdup(attribute_values[i]);
- unreplace_amp(value);
- ptr = g_strrstr(value, "/");
- if (ptr == NULL) {
- g_strlcpy(url, parser_item->src, 1024);
- ptr = g_strrstr(url, "/");
- if (ptr != NULL) {
- ptr[1] = (char) NULL;
- g_strlcpy(newitem->src, url, 1024);
- g_strlcat(newitem->src, value, 1024);
+ parser_item->playlist = TRUE;
+ if (!global_detect_only) {
+ newitem = g_new0(ListItem, 1);
+ value = g_strdup(attribute_values[i]);
+ unreplace_amp(value);
+ ptr = g_strrstr(value, "/");
+ if (ptr == NULL) {
+ g_strlcpy(url, parser_item->src, 1024);
+ ptr = g_strrstr(url, "/");
+ if (ptr != NULL) {
+ ptr[1] = (char) NULL;
+ g_strlcpy(newitem->src, url, 1024);
+ g_strlcat(newitem->src, value, 1024);
+ }
+ } else {
+ g_strlcpy(newitem->src, value, 1024);
}
- } else {
- g_strlcpy(newitem->src, value, 1024);
- }
- g_free(value);
- newitem->streaming = streaming(newitem->src);
- // crappy hack, mplayer needs the protocol in lower case, some sites don't
- if (newitem->streaming) {
- newitem->src[0] = g_ascii_tolower(newitem->src[0]);
- newitem->src[1] = g_ascii_tolower(newitem->src[1]);
- newitem->src[2] = g_ascii_tolower(newitem->src[2]);
- newitem->src[3] = g_ascii_tolower(newitem->src[3]);
- }
- newitem->play = TRUE;
- if (entry_id != 0) {
- newitem->id = entry_id;
- } else {
- newitem->id = parser_item->id;
- parser_item->id = -1;
- }
- newitem->controlid = parser_item->controlid;
- if (asx_loop != 0) {
- newitem->loop = TRUE;
- newitem->loopcount = asx_loop;
+ g_free(value);
+ newitem->streaming = streaming(newitem->src);
+ // crappy hack, mplayer needs the protocol in lower case, some sites don't
+ if (newitem->streaming) {
+ newitem->src[0] = g_ascii_tolower(newitem->src[0]);
+ newitem->src[1] = g_ascii_tolower(newitem->src[1]);
+ newitem->src[2] = g_ascii_tolower(newitem->src[2]);
+ newitem->src[3] = g_ascii_tolower(newitem->src[3]);
+ }
+ newitem->play = TRUE;
+ if (entry_id != 0) {
+ newitem->id = entry_id;
+ } else {
+ newitem->id = parser_item->id;
+ parser_item->id = -1;
+ }
+ newitem->controlid = parser_item->controlid;
+ if (asx_loop != 0) {
+ newitem->loop = TRUE;
+ newitem->loopcount = asx_loop;
+ }
+ g_strlcpy(newitem->path, parser_item->path, 1024);
+ parser_list = g_list_append(parser_list, newitem);
}
- g_strlcpy(newitem->path, parser_item->path, 1024);
- parser_list = g_list_append(parser_list, newitem);
}
}
@@ -596,6 +672,7 @@ asx_start_element(GMarkupParseContext * context,
if (list_find(parser_list, (gchar *) attribute_values[i])
== NULL) {
parser_item->play = FALSE;
+ parser_item->playlist = TRUE;
newitem = g_new0(ListItem, 1);
value = g_strdup(attribute_values[i]);
unreplace_amp(value);
@@ -650,18 +727,19 @@ asx_end_element(GMarkupParseContext * context,
}
-GList *list_parse_qml(GList * list, ListItem * item)
+GList *list_parse_qml(GList * list, ListItem * item, gboolean detect_only)
{
GMarkupParseContext *context;
gchar *data;
gsize datalen;
- printf("Entering list_parse_qml localsize = %i\n", item->localsize);
+ // printf("Entering list_parse_qml localsize = %i\n", item->localsize);
if (item->localsize < (16 * 1024)) {
if (g_file_get_contents(item->local, &data, &datalen, NULL)) {
parser_list = list;
parser_item = item;
+ global_detect_only = detect_only;
asx_loop = 0;
strip_unicode(data, datalen);
replace_amp(data);
@@ -671,10 +749,11 @@ GList *list_parse_qml(GList * list, ListItem * item)
g_markup_parse_context_free(context);
parser_item = NULL;
parser_list = NULL;
+ global_detect_only = FALSE;
}
// list_dump(list);
}
- printf("Exiting list_parse_qml\n");
+ // printf("Exiting list_parse_qml\n");
return list;
}
@@ -696,33 +775,36 @@ qml_start_element(GMarkupParseContext * context,
== NULL) {
if (parser_item->play) {
parser_item->play = FALSE;
- newitem = g_new0(ListItem, 1);
- value = g_strdup(attribute_values[i]);
- unreplace_amp(value);
- g_strlcpy(newitem->src, value, 1024);
- g_free(value);
- newitem->streaming = streaming(newitem->src);
- // crappy hack, mplayer needs the protocol in lower case, some sites don't
- if (newitem->streaming) {
- newitem->src[0] = g_ascii_tolower(newitem->src[0]);
- newitem->src[1] = g_ascii_tolower(newitem->src[1]);
- newitem->src[2] = g_ascii_tolower(newitem->src[2]);
- newitem->src[3] = g_ascii_tolower(newitem->src[3]);
- }
- newitem->play = TRUE;
- if (entry_id != 0) {
- newitem->id = entry_id;
- } else {
- newitem->id = parser_item->id;
- parser_item->id = -1;
- }
- newitem->controlid = parser_item->controlid;
- if (asx_loop != 0) {
- newitem->loop = TRUE;
- newitem->loopcount = asx_loop;
+ parser_item->playlist = TRUE;
+ if (!global_detect_only) {
+ newitem = g_new0(ListItem, 1);
+ value = g_strdup(attribute_values[i]);
+ unreplace_amp(value);
+ g_strlcpy(newitem->src, value, 1024);
+ g_free(value);
+ newitem->streaming = streaming(newitem->src);
+ // crappy hack, mplayer needs the protocol in lower case, some sites don't
+ if (newitem->streaming) {
+ newitem->src[0] = g_ascii_tolower(newitem->src[0]);
+ newitem->src[1] = g_ascii_tolower(newitem->src[1]);
+ newitem->src[2] = g_ascii_tolower(newitem->src[2]);
+ newitem->src[3] = g_ascii_tolower(newitem->src[3]);
+ }
+ newitem->play = TRUE;
+ if (entry_id != 0) {
+ newitem->id = entry_id;
+ } else {
+ newitem->id = parser_item->id;
+ parser_item->id = -1;
+ }
+ newitem->controlid = parser_item->controlid;
+ if (asx_loop != 0) {
+ newitem->loop = TRUE;
+ newitem->loopcount = asx_loop;
+ }
+ g_strlcpy(newitem->path, parser_item->path, 1024);
+ parser_list = g_list_append(parser_list, newitem);
}
- g_strlcpy(newitem->path, parser_item->path, 1024);
- parser_list = g_list_append(parser_list, newitem);
}
}
}
@@ -731,7 +813,7 @@ qml_start_element(GMarkupParseContext * context,
}
}
-GList *list_parse_ram(GList * list, ListItem * item)
+GList *list_parse_ram(GList * list, ListItem * item, gboolean detect_only)
{
gchar *data;
gsize datalen;
@@ -743,7 +825,7 @@ GList *list_parse_ram(GList * list, ListItem * item)
gchar *ptr;
gchar url[1024];
- printf("Entering list_parse_ram localsize = %i\n", item->localsize);
+ // printf("Entering list_parse_ram localsize = %i\n", item->localsize);
if (item->localsize < (16 * 1024)) {
if (g_file_get_contents(item->local, &data, &datalen, NULL)) {
@@ -765,35 +847,38 @@ GList *list_parse_ram(GList * list, ListItem * item)
if (list_find(parser_list, (gchar *) output[i])
== NULL) {
parser_item->play = FALSE;
- newitem = g_new0(ListItem, 1);
- value = g_strdup(output[i]);
- unreplace_amp(value);
- ptr = g_strrstr(value, "/");
- if (ptr == NULL) {
- g_strlcpy(url, parser_item->src, 1024);
- ptr = g_strrstr(url, "/");
- if (ptr != NULL) {
- ptr[1] = (char) NULL;
- g_strlcpy(newitem->src, url, 1024);
- g_strlcat(newitem->src, value, 1024);
+ parser_item->playlist = TRUE;
+ if (!detect_only) {
+ newitem = g_new0(ListItem, 1);
+ value = g_strdup(output[i]);
+ unreplace_amp(value);
+ ptr = g_strrstr(value, "/");
+ if (ptr == NULL) {
+ g_strlcpy(url, parser_item->src, 1024);
+ ptr = g_strrstr(url, "/");
+ if (ptr != NULL) {
+ ptr[1] = (char) NULL;
+ g_strlcpy(newitem->src, url, 1024);
+ g_strlcat(newitem->src, value, 1024);
+ }
+ } else {
+ g_strlcpy(newitem->src, value, 1024);
}
- } else {
- g_strlcpy(newitem->src, value, 1024);
- }
- g_free(value);
- newitem->streaming = streaming(newitem->src);
- // crappy hack, mplayer needs the protocol in lower case, some sites don't
- if (newitem->streaming) {
- newitem->src[0] = g_ascii_tolower(newitem->src[0]);
- newitem->src[1] = g_ascii_tolower(newitem->src[1]);
- newitem->src[2] = g_ascii_tolower(newitem->src[2]);
- newitem->src[3] = g_ascii_tolower(newitem->src[3]);
+ g_free(value);
+ newitem->streaming = streaming(newitem->src);
+ // crappy hack, mplayer needs the protocol in lower case, some sites don't
+ if (newitem->streaming) {
+ newitem->src[0] = g_ascii_tolower(newitem->src[0]);
+ newitem->src[1] = g_ascii_tolower(newitem->src[1]);
+ newitem->src[2] = g_ascii_tolower(newitem->src[2]);
+ newitem->src[3] = g_ascii_tolower(newitem->src[3]);
+ }
+ newitem->play = TRUE;
+ newitem->id = ++entry_id;
+ newitem->controlid = parser_item->controlid;
+ g_strlcpy(newitem->path, parser_item->path, 1024);
+ parser_list = g_list_append(parser_list, newitem);
}
- newitem->play = TRUE;
- newitem->id = ++entry_id;
- newitem->controlid = parser_item->controlid;
- g_strlcpy(newitem->path, parser_item->path, 1024);
- parser_list = g_list_append(parser_list, newitem);
}
}
i++;
@@ -805,6 +890,6 @@ GList *list_parse_ram(GList * list, ListItem * item)
}
// list_dump(list);
}
- printf("Exiting list_parse_ram\n");
+ // printf("Exiting list_parse_ram\n");
return list;
}
diff --git a/src/plugin_list.h b/src/plugin_list.h
index 1e3035c..4728a08 100644
--- a/src/plugin_list.h
+++ b/src/plugin_list.h
@@ -42,6 +42,7 @@
#include <stdio.h>
#include <string.h>
#include "memmem_compat.h"
+#include <gmlib.h>
typedef struct _ListItem {
gchar src[4096];
@@ -56,9 +57,12 @@ typedef struct _ListItem {
gboolean streaming;
gboolean requested;
gboolean retrieved;
+ gboolean oktoplay;
+ gboolean queuedtoplay;
gboolean play;
gboolean played;
gboolean opened;
+ gboolean playlist;
guint mediasize;
gint localsize;
gint lastsize;
@@ -113,13 +117,16 @@ void list_mark_controlid_ready(GList * list, gint id);
void list_mark_controlid_cancelled(GList * list, gint id, gboolean cancelled);
void list_mark_id_played(GList * list, gint id);
ListItem *list_find_next_playable(GList * list);
+ListItem *list_find_next_playable_after_listitem(GList * list, ListItem * find);
+ListItem *list_find_first_playable(GList * list);
void list_qualify_url(GList * list, gchar * page_url);
GList *list_clear(GList * list);
void list_dump(GList * list);
-GList *list_parse_qt(GList * list, ListItem * item);
-GList *list_parse_qt2(GList * list, ListItem * item);
-GList *list_parse_asx(GList * list, ListItem * item);
-GList *list_parse_qml(GList * list, ListItem * item); // Quick Time Media Link
-GList *list_parse_ram(GList * list, ListItem * item); // Real Audio Playlist
+GList *list_parse_qt(GList * list, ListItem * item, gboolean detect_only);
+GList *list_parse_qt2(GList * list, ListItem * item, gboolean detect_only);
+GList *list_parse_asx(GList * list, ListItem * item, gboolean detect_only);
+GList *list_parse_qml(GList * list, ListItem * item, gboolean detect_only); // Quick Time Media Link
+GList *list_parse_ram(GList * list, ListItem * item, gboolean detect_only); // Real Audio Playlist
+gboolean list_item_opened(GList * list);
#endif // _PLUGIN_LIST_H
diff --git a/src/plugin_setup.cpp b/src/plugin_setup.cpp
index b7dd560..c62b589 100644
--- a/src/plugin_setup.cpp
+++ b/src/plugin_setup.cpp
@@ -67,15 +67,16 @@ void new_instance(CPlugin * instance, int16_t argc, char *argn[], char *argv[])
if (instance->mode == NP_EMBED) {
/*
- printf("argc = %i\n", argc);
- for (i = 0; i < argc; i++) {
- printf("ARG[%i]: %s = %s\n", i, argn[i], argv[i]);
- }
- */
-
+ printf("argc = %i\n", argc);
+ for (i = 0; i < argc; i++) {
+ printf("ARG[%i]: %s = %s\n", i, argn[i], argv[i]);
+ }
+ */
+
for (i = 0; i < argc; i++) {
- printf("ARG[%i]: %s = %s\n", i, argn[i], argv[i]);
+ gm_log(instance->debug_level, G_LOG_LEVEL_INFO, "ARG[%i]: %s = %s", i, argn[i],
+ argv[i]);
if (argn[i] == NULL)
continue;
@@ -128,7 +129,7 @@ void new_instance(CPlugin * instance, int16_t argc, char *argn[], char *argv[])
tmp = g_strrstr(argv[i], "height:");
if (tmp)
sscanf(tmp + strlen("height:"), "%i", &height);
- printf("done with style\n");
+ gm_log(instance->debug_level, G_LOG_LEVEL_DEBUG, "done with style\n");
}
@@ -447,7 +448,7 @@ void new_instance(CPlugin * instance, int16_t argc, char *argn[], char *argv[])
if (argn[i] == NULL)
continue;
- printf("ARG: %s = %s\n", argn[i], argv[i]);
+ gm_log(instance->debug_level, G_LOG_LEVEL_INFO, "ARG: %s = %s\n", argn[i], argv[i]);
if (g_ascii_strcasecmp(argn[i], "src") == 0) {
item = g_new0(ListItem, 1);
@@ -463,7 +464,8 @@ void new_instance(CPlugin * instance, int16_t argc, char *argn[], char *argv[])
g_strlcpy(item->src, argv[i], 4096);
}
item->streaming = streaming(item->src);
- printf("this should match %s\n", item->src);
+ gm_log(instance->debug_level, G_LOG_LEVEL_DEBUG, "this should match %s\n",
+ item->src);
item->play = TRUE;
item->id = instance->nextid++;
instance->playlist = g_list_append(instance->playlist, item);
@@ -574,7 +576,7 @@ void new_instance(CPlugin * instance, int16_t argc, char *argn[], char *argv[])
arg[i] = NULL;
error = NULL;
if (g_spawn_async(NULL, arg, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, &error) == FALSE) {
- printf("Unable to launch: %s\n", error->message);
+ gm_log(TRUE, G_LOG_LEVEL_INFO, "Unable to launch: %s\n", error->message);
g_error_free(error);
error = NULL;
}
diff --git a/src/plugin_types_dvx.cpp b/src/plugin_types_dvx.cpp
index 68d4e15..5bb2d24 100644
--- a/src/plugin_types_dvx.cpp
+++ b/src/plugin_types_dvx.cpp
@@ -97,5 +97,5 @@ NPError PluginGetValue(NPPVariable variable, void *value)
void pluginSpecific(CPlugin * instance)
{
-
+ instance->quicktime_emulation = FALSE;
}
diff --git a/src/plugin_types_qt.cpp b/src/plugin_types_qt.cpp
index ae0d5ae..7ca91c6 100644
--- a/src/plugin_types_qt.cpp
+++ b/src/plugin_types_qt.cpp
@@ -102,6 +102,6 @@ void pluginSpecific(CPlugin * instance)
{
//printf("calling pluginSpecific for qt plugin\n");
//setPreference(instance, "general.useragent.override", "QuickTime/7.6.9");
- printf("Loading QuickTime compatibility\n");
+ gm_log(TRUE, G_LOG_LEVEL_INFO, "Loading QuickTime compatibility\n");
instance->quicktime_emulation = TRUE;
}
diff --git a/src/plugin_types_rm.cpp b/src/plugin_types_rm.cpp
index 7b7c707..67c2548 100644
--- a/src/plugin_types_rm.cpp
+++ b/src/plugin_types_rm.cpp
@@ -103,5 +103,5 @@ NPError PluginGetValue(NPPVariable variable, void *value)
void pluginSpecific(CPlugin * instance)
{
-
+ instance->quicktime_emulation = FALSE;
}
diff --git a/src/plugin_types_wmp.cpp b/src/plugin_types_wmp.cpp
index a0f9634..ab1d214 100644
--- a/src/plugin_types_wmp.cpp
+++ b/src/plugin_types_wmp.cpp
@@ -116,5 +116,5 @@ NPError PluginGetValue(NPPVariable variable, void *value)
void pluginSpecific(CPlugin * instance)
{
-
+ instance->quicktime_emulation = FALSE;
}
--
gecko-mediaplayer packaging
More information about the pkg-multimedia-commits
mailing list