From: Darren S. <ds...@us...> - 2006-02-15 19:00:54
|
Update of /cvsroot/xine/gnome-xine/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28760/src Modified Files: main.c playlist.c script_engine.c script_engine.h Log Message: Add "event" object with one property, "stream_end", which contains a Javascript string which is executed when the end of the stream is reached. Index: main.c =================================================================== RCS file: /cvsroot/xine/gnome-xine/src/main.c,v retrieving revision 1.152 retrieving revision 1.153 diff -u -r1.152 -r1.153 --- main.c 20 Jan 2006 19:28:08 -0000 1.152 +++ main.c 15 Feb 2006 19:00:27 -0000 1.153 @@ -235,6 +235,7 @@ gboolean enqueue, autoplay, fullscreen; int optstate; gboolean show_splash = TRUE; + const char *cmd = NULL; #ifndef GLIB_USES_SYSTEM_MALLOC GMemVTable vtab = { xmalloc, xrealloc, free, NULL, NULL, NULL }; @@ -332,6 +333,7 @@ { "video", required_argument, NULL, 'V' }, { "audio", required_argument, NULL, 'A' }, { "no-splash", no_argument, NULL, 'S' }, + { "command", required_argument, NULL, 'c' }, { NULL } }; int index = 0; @@ -372,6 +374,9 @@ case 'S': show_splash = FALSE; break; + case 'c': + cmd = optarg; + break; default: optstate |= 2; break; @@ -535,6 +540,10 @@ gtk_init_add ((GtkFunction) ui_post_init, NULL); server_start (); + /* execute any command-line JS */ + if (cmd) + se_eval (gse, cmd, NULL, NULL, NULL, "--command"); + //gdk_threads_enter(); gtk_main(); //gdk_threads_leave(); Index: playlist.c =================================================================== RCS file: /cvsroot/xine/gnome-xine/src/playlist.c,v retrieving revision 1.156 retrieving revision 1.157 diff -u -r1.156 -r1.157 --- playlist.c 20 Jan 2006 19:38:54 -0000 1.156 +++ playlist.c 15 Feb 2006 19:00:30 -0000 1.157 @@ -1423,7 +1423,10 @@ case XINE_EVENT_UI_PLAYBACK_FINISHED: gdk_threads_enter(); if (!logo_mode) + { + se_eval (gse, "eval (event.stream_end);", NULL, NULL, NULL, "event.stream_end"); play_next (); + } gdk_threads_leave(); break; @@ -1551,6 +1554,7 @@ case XINE_MSG_GENERAL_WARNING: case XINE_MSG_NETWORK_UNREACHABLE: case XINE_MSG_UNKNOWN_HOST: + case 13 /* UNCOMMENTME: XINE_MSG_FILE_EMPTY */: msg = display_warning; break; Index: script_engine.c =================================================================== RCS file: /cvsroot/xine/gnome-xine/src/script_engine.c,v retrieving revision 1.72 retrieving revision 1.73 diff -u -r1.72 -r1.73 --- script_engine.c 20 Jan 2006 19:37:18 -0000 1.72 +++ script_engine.c 15 Feb 2006 19:00:41 -0000 1.73 @@ -56,6 +56,8 @@ /* #define LOG */ +se_o_t *event_obj = NULL; + static JSRuntime *rt=NULL; /* global */ static GSList *se_chain; @@ -1068,6 +1070,7 @@ v.s = p->value = strdup (value); p->se_type = SE_TYPE_STRING; se_prop_listeners (se, o, p, v); +printf("set property %s to %s\n", id, value); } else se_prop_create (se, o, id, value, NULL, 0, SE_TYPE_STRING, FALSE); @@ -1187,6 +1190,7 @@ default:; } } +printf("get property %s, value %p %s\n", id,p->value,p->value); return p->value; } @@ -1786,6 +1790,11 @@ se_defuns (se, se->g, defs); } + event_obj = se_create_object (se, NULL, "event", NULL, SE_GROUP_ENGINE, + "stream_end=JS"); + se_prop_create (se, event_obj, "stream_end", "", NULL, 0, + SE_TYPE_STRING, FALSE); + return se; } Index: script_engine.h =================================================================== RCS file: /cvsroot/xine/gnome-xine/src/script_engine.h,v retrieving revision 1.25 retrieving revision 1.26 diff -u -r1.25 -r1.26 --- script_engine.h 21 Dec 2005 18:37:12 -0000 1.25 +++ script_engine.h 15 Feb 2006 19:00:43 -0000 1.26 @@ -132,6 +132,8 @@ const char *help; }; +extern se_o_t *event_obj; + /* * create a javascript engine with predefined xine functions * and objects |