Update of /cvsroot/xine/gnome-xine/src In directory sc8-pr-cvs1:/tmp/cvs-serv12023 Modified Files: actions.c globals.h gtkxine.c main.c mediamarks.c script_engine.c server.c skin_window.c skin_window.h Log Message: some small advances towards skin support, setting verbose config option Index: actions.c =================================================================== RCS file: /cvsroot/xine/gnome-xine/src/actions.c,v retrieving revision 1.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- actions.c 25 Feb 2003 22:13:13 -0000 1.21 +++ actions.c 6 Mar 2003 16:51:03 -0000 1.22 @@ -31,7 +31,8 @@ static void print_cb (void *user_data, char *str) { - printf ("actions: < %s\n", str); + if (verbosity) + printf ("actions: < %s\n", str); } @@ -40,7 +41,8 @@ int num; char *str; - printf ("action: > executing '%s'...\n", cmd); + if (verbosity) + printf ("action: > executing '%s'...\n", cmd); if (!cb) { cb = print_cb; Index: globals.h =================================================================== RCS file: /cvsroot/xine/gnome-xine/src/globals.h,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- globals.h 1 Feb 2003 23:30:06 -0000 1.8 +++ globals.h 6 Mar 2003 16:51:04 -0000 1.9 @@ -36,6 +36,7 @@ extern infobar_t *bar; extern pthread_mutex_t engine_lock; extern GtkMenuShell *media_menu; +extern int verbosity; #define MAX_MRL_LEN 1024 Index: gtkxine.c =================================================================== RCS file: /cvsroot/xine/gnome-xine/src/gtkxine.c,v retrieving revision 1.60 retrieving revision 1.61 diff -u -r1.60 -r1.61 --- gtkxine.c 25 Feb 2003 19:38:40 -0000 1.60 +++ gtkxine.c 6 Mar 2003 16:51:06 -0000 1.61 @@ -50,6 +50,12 @@ #include "gtkxine.h" #include "i18n.h" +/* + * global variable + */ + +int verbosity = 0; + #define DEFAULT_WIDTH 420 #define DEFAULT_HEIGHT 315 @@ -129,13 +135,27 @@ */ this->xine = xine_new(); - + snprintf (this->configfile, 255, "%s/.gxine/config", getenv ("HOME")); xine_config_load (this->xine, this->configfile); + /* set verbose option */ + { + xine_cfg_entry_t verbose_entry; + + if (xine_config_lookup_entry (this->xine, "misc.verbosity", + &verbose_entry)) { + verbose_entry.num_value = verbosity; + xine_config_update_entry (this->xine, &verbose_entry); + } else { + printf ("gtkxine: verbosity setting not found.\n"); + abort (); + } + } + this->stream = NULL; - this->video_port = NULL; - this->audio_port = NULL; + this->video_port = NULL; + this->audio_port = NULL; this->display = NULL; this->fullscreen_mode = FALSE; this->oldwidth = 0; @@ -364,8 +384,6 @@ video_driver_id); /* => auto-detect */ } - printf ("gtkxine: auto-detecting video driver...\n"); - return xine_open_video_driver (this->xine, NULL, XINE_VISUAL_TYPE_X11, (void *) &vis); @@ -776,8 +794,6 @@ /* save configuration */ - printf ("gtkxine: saving configuration...\n"); - xine_config_save (this->xine, this->configfile); /* exit xine */ @@ -852,8 +868,9 @@ g_return_val_if_fail (GTK_IS_XINE (gtx), -1); g_return_val_if_fail (gtx->xine != NULL, -1); - printf ("gtkxine: calling xine_open, mrl = '%s'\n", - mrl); + if (verbosity) + printf ("gtkxine: calling xine_open, mrl = '%s'\n", + mrl); return xine_open (gtx->stream, mrl); } @@ -867,8 +884,9 @@ g_return_val_if_fail (GTK_IS_XINE (gtx), -1); g_return_val_if_fail (gtx->xine != NULL, -1); - printf ("gtkxine: calling xine_play start_pos = %d, start_time = %d\n", - pos, start_time); + if (verbosity) + printf ("gtkxine: calling xine_play start_pos = %d, start_time = %d\n", + pos, start_time); /* * visualization Index: main.c =================================================================== RCS file: /cvsroot/xine/gnome-xine/src/main.c,v retrieving revision 1.77 retrieving revision 1.78 diff -u -r1.77 -r1.78 --- main.c 1 Mar 2003 18:37:48 -0000 1.77 +++ main.c 6 Mar 2003 16:51:07 -0000 1.78 @@ -29,11 +29,6 @@ #include <sys/stat.h> #include <unistd.h> #include <X11/Xlib.h> -#ifdef HAVE_XTESTEXTENSION -#include <X11/extensions/XTest.h> -#define XK_MISCELLANY 1 -#include <X11/keysymdef.h> -#endif #include <stdio.h> #include <stdlib.h> @@ -66,6 +61,10 @@ #include "gtkxine.h" /* +#define EXP_STUFF +*/ + +/* * globals */ @@ -74,20 +73,12 @@ infobar_t *bar; pthread_mutex_t engine_lock; -static int have_xtest; -#ifdef HAVE_XTESTEXTENSION -static KeyCode kc_shift_l; /* fake key to send */ -#endif - void gxine_try_remote (int argc, char *argv[], int enqueue) { if (!server_client_connect()) { - printf ("main: gxine not running for this user yet.\n"); return; } - printf ("main: gxine already running\n"); - /* * pass on files to play */ @@ -143,7 +134,7 @@ int main(int argc, char* argv[]) { - int opt, verbose, enqueue; + int opt, enqueue; gchar *video_driver_id=NULL; gchar *audio_driver_id=NULL; @@ -170,12 +161,12 @@ * parse command line arguments */ - verbose = 0; + verbosity = 0; enqueue = 0; while ((opt = getopt(argc, argv, "veV:A:")) > 0) { switch (opt) { case 'v': - verbose = 1; + verbosity++; break; case 'e': enqueue = 1; @@ -209,35 +200,14 @@ g_free (fname); } -#if 0 +#ifdef EXP_STUFF /* * experimental stuff */ - { - GtkWidget *sw; - sw = create_skin_window () ; - gtk_widget_show_all (sw); - } -#endif - - /* - * screensaver - */ - -#ifdef HAVE_XTESTEXTENSION - { - int dummy1, dummy2, dummy3, dummy4; - - have_xtest = XTestQueryExtension (gdk_display, &dummy1, - &dummy2, &dummy3, &dummy4); - kc_shift_l = XKeysymToKeycode (gdk_display, XK_Shift_L); - } -#else - have_xtest = 0; + create_skin_window () ; #endif - /* * skript engine, main window */ @@ -273,9 +243,6 @@ /* * argument parsing */ - - if (verbose) - gtk_xine_set_param (GTK_XINE(gtx), XINE_PARAM_VERBOSITY, 1); if (optind<argc) { int i; Index: mediamarks.c =================================================================== RCS file: /cvsroot/xine/gnome-xine/src/mediamarks.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- mediamarks.c 1 Mar 2003 23:37:56 -0000 1.15 +++ mediamarks.c 6 Mar 2003 16:51:07 -0000 1.16 @@ -241,8 +241,6 @@ if (!id) break; - printf ("mediamarks: read line %s\n", id); - if (!strncmp (id, "<sub>", 5)) { GtkTreeIter placeholder; @@ -356,12 +354,16 @@ &iter, 2, &v); play_item = g_value_peek_pointer (&v); if (play_item) { +#ifdef LOG printf ("mediamarks: got a play item\n"); +#endif play_item_edit (play_item); +#ifdef LOG printf ("mediamarks: play item title after edit : %s\n", play_item->title); +#endif gtk_tree_store_set (mm_store, &iter, 0, play_item->title, @@ -402,14 +404,13 @@ char *id; memset (&v, 0, sizeof (GValue)); - printf ("mediamarks: something is selected.\n"); + gtk_tree_model_get_value (GTK_TREE_MODEL (mm_store), &iter, 0, &v); id = (char *) g_value_peek_pointer (&v); - printf ("mediamarks: %s selected\n", id); + if (!strcmp (id, PLACEHOLDER)) { g_value_unset (&v); - printf ("mediamarks: placeholder cannot be deleted\n"); return; } @@ -438,10 +439,9 @@ play_item_t *play_item; memset (&v, 0, sizeof (GValue)); - printf ("mediamarks: something is selected.\n"); gtk_tree_model_get_value (GTK_TREE_MODEL (mm_store), &iter, 0, &v); - printf ("mediamarks: %s selected\n", (char *) g_value_peek_pointer (&v)); + g_value_unset (&v); /* @@ -453,32 +453,26 @@ &iter, 2, &v); play_item = g_value_peek_pointer (&v); if (play_item) { - printf ("mediamarks: this is a play item\n"); if (!gtk_tree_model_iter_parent (GTK_TREE_MODEL (mm_store), &parent, &iter)) { - printf ("mediamarks: cannot find parent => creating in root\n"); in_root = 1; } else in_root = 0; } else { GtkTreePath *path; - printf ("mediamarks: this is a section, find out wheter it is expanded or not\n"); path = gtk_tree_model_get_path (GTK_TREE_MODEL (mm_store), &iter); if (gtk_tree_view_row_expanded (tree, path)) { - printf ("mediamarks: is expanded\n"); in_root = 0; memcpy (&parent, &iter, sizeof (iter)); } else { - printf ("mediamarks: is not expanded\n"); if (!gtk_tree_model_iter_parent (GTK_TREE_MODEL (mm_store), &parent, &iter)) { - printf ("mediamarks: cannot find parent => creating in root\n"); in_root = 1; } else in_root = 0; @@ -488,7 +482,6 @@ } g_value_unset (&v); } else { - printf ("mediamarks: nothing selected, creating in root\n"); in_root = 1; } @@ -518,8 +511,6 @@ void tree_changed_cb (GtkTreeModel *treemodel, GtkTreePath *arg1, gpointer user_data) { - printf ("mediamarks: tree changed\n"); - update_menu (media_menu); } @@ -775,8 +766,6 @@ if (f) { GtkTreeIter iter; - - printf ("mediamarks: saving to %s\n", fname); fprintf (f, "<GXINEMM VERSION=\"1\">\n"); Index: script_engine.c =================================================================== RCS file: /cvsroot/xine/gnome-xine/src/script_engine.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- script_engine.c 2 Mar 2003 20:17:53 -0000 1.14 +++ script_engine.c 6 Mar 2003 16:51:08 -0000 1.15 @@ -85,7 +85,8 @@ return NULL; se->str = JS_ValueToString (se->cx, se->rval); - printf("script_engine: script result: %s\n", JS_GetStringBytes (se->str)); + if (verbosity) + printf("script_engine: script result: %s\n", JS_GetStringBytes (se->str)); return JS_GetStringBytes (se->str); } @@ -121,18 +122,24 @@ JSBool controls_JSGetProperty (JSContext *cx, JSObject *obj, jsval id, jsval *vp) { +#ifdef LOG printf ("script_engine: get property called\n"); +#endif if (JSVAL_IS_STRING (id)) { JSString *str; char *prop; +#ifdef LOG printf ("script_engine: id is a string \n"); +#endif str = JS_ValueToString (cx, id); prop = JS_GetStringBytes (str); +#ifdef LOG printf ("script_engine: id = '%s'\n", JS_GetStringBytes (str)); +#endif if (!strcmp (prop, "audioLanguageCount")) { *vp = INT_TO_JSVAL (1); @@ -162,7 +169,9 @@ JSBool controls_JSSetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) { +#ifdef LOG printf ("script_engine: set property called\n"); +#endif #if 0 if (JSVAL_IS_INT(id)) { @@ -188,7 +197,9 @@ gchar *fname; +#ifdef LOG printf ("script_engine: controls.exit called\n"); +#endif #if 0 stop_server(); @@ -200,7 +211,9 @@ playlist_save (NULL); save_key_bindings (); +#ifdef LOG printf ("script_engine: saving config...\n"); +#endif fname = g_strconcat(g_get_home_dir(), "/.gxine/config", NULL); @@ -222,7 +235,9 @@ char *mrl = NULL; int pos, pos_time; +#ifdef LOG printf ("script_engine: controls.play called\n"); +#endif pos = -1; pos_time = -1; @@ -249,7 +264,9 @@ str = JS_ValueToString (cx, argv[0]); mrl = JS_GetStringBytes (str); +#ifdef LOG printf ("script_engine: playing '%s' from start\n", mrl); +#endif } break; @@ -270,7 +287,9 @@ JS_ValueToInt32 (cx, argv[0], &pos); JS_ValueToInt32 (cx, argv[1], &pos_time); mrl = NULL; +#ifdef LOG printf ("script_engine: playing from %d, %d\n", pos, pos_time); +#endif } break; @@ -297,7 +316,9 @@ JS_ValueToInt32 (cx, argv[1], &pos); JS_ValueToInt32 (cx, argv[2], &pos_time); mrl = JS_GetStringBytes (str); +#ifdef LOG printf ("script_engine: playing '%s' from %d, %d\n", mrl, pos, pos_time); +#endif } break; @@ -380,7 +401,9 @@ /* se_t *se = (se_t *) JS_GetContextPrivate(cx); */ int pos, pos_time, len; +#ifdef LOG printf ("script_engine: get_time () called\n"); +#endif gtk_xine_get_pos_length (GTK_XINE (gtx), &pos, &pos_time, &len); @@ -396,7 +419,9 @@ /* se_t *se = (se_t *) JS_GetContextPrivate(cx); */ int speed; +#ifdef LOG printf ("script_engine: get_speed () called\n"); +#endif speed = gtk_xine_get_param (GTK_XINE(gtx), XINE_PARAM_SPEED); @@ -411,7 +436,9 @@ /* se_t *se = (se_t *) JS_GetContextPrivate(cx); */ int speed; +#ifdef LOG printf ("script_engine: playlist_get_item () called\n"); +#endif speed = gtk_xine_get_param (GTK_XINE(gtx), XINE_PARAM_SPEED); @@ -426,7 +453,9 @@ /* se_t *se = (se_t *) JS_GetContextPrivate(cx); */ int volume; +#ifdef LOG printf ("script_engine: get_volume () called\n"); +#endif volume = gtk_xine_get_param (GTK_XINE(gtx), XINE_PARAM_AUDIO_VOLUME); @@ -441,7 +470,9 @@ /* se_t *se = (se_t *) JS_GetContextPrivate(cx); */ int zoom; +#ifdef LOG printf ("script_engine: get_zoom () called\n"); +#endif zoom = gtk_xine_get_param (GTK_XINE(gtx), XINE_PARAM_VO_ZOOM_X); @@ -456,7 +487,9 @@ se_t *se = (se_t *) JS_GetContextPrivate(cx); int pause_state=-1; +#ifdef LOG printf ("script_engine: controls_pause called\n"); +#endif if (argc==1) { if (!JSVAL_IS_INT (argv[0])) { @@ -498,7 +531,9 @@ se_t *se = (se_t *) JS_GetContextPrivate(cx); +#ifdef LOG printf ("script_engine: controls_stop called\n"); +#endif if (pthread_mutex_trylock (&engine_lock)) { se->print_cb (se->print_cb_data, @@ -520,7 +555,9 @@ /* se_t *se = (se_t *) JS_GetContextPrivate(cx); */ +#ifdef LOG printf ("script_engine: playlist_clear called\n"); +#endif playlist_clear (); @@ -535,7 +572,9 @@ char *mrl; int item; +#ifdef LOG printf ("script_engine: playlist_add called\n"); +#endif if (argc!=1) { se->print_cb (se->print_cb_data, @@ -551,7 +590,9 @@ str = JS_ValueToString (cx, argv[0]); mrl = JS_GetStringBytes (str); +#ifdef LOG printf ("playlist_add: mrl=%s\n", mrl); +#endif item = playlist_add_mrl (mrl); @@ -566,7 +607,9 @@ se_t *se = (se_t *) JS_GetContextPrivate(cx); int item; +#ifdef LOG printf ("script_engine: paylist_play called\n"); +#endif if (argc!=1) { se->print_cb (se->print_cb_data, @@ -595,7 +638,9 @@ /* se_t *se = (se_t *) JS_GetContextPrivate(cx); */ +#ifdef LOG printf ("script_engine: paylist_show called\n"); +#endif playlist_show (); @@ -607,7 +652,9 @@ /* se_t *se = (se_t *) JS_GetContextPrivate(cx); */ +#ifdef LOG printf ("script_engine: settings_show called\n"); +#endif settings_show (); @@ -619,7 +666,9 @@ /* se_t *se = (se_t *) JS_GetContextPrivate(cx); */ +#ifdef LOG printf ("script_engine: preferences_show called\n"); +#endif preferences_show (); @@ -631,7 +680,9 @@ /* se_t *se = (se_t *) JS_GetContextPrivate(cx); */ +#ifdef LOG printf ("script_engine: keybindings_show called\n"); +#endif kb_edit_show (); @@ -643,7 +694,9 @@ /* se_t *se = (se_t *) JS_GetContextPrivate(cx); */ +#ifdef LOG printf ("script_engine: mm_add_show called\n"); +#endif mm_add_show (); @@ -655,7 +708,9 @@ /* se_t *se = (se_t *) JS_GetContextPrivate(cx); */ +#ifdef LOG printf ("script_engine: mm_manage_show called\n"); +#endif mm_manage_show (); @@ -667,7 +722,9 @@ /* se_t *se = (se_t *) JS_GetContextPrivate(cx); */ +#ifdef LOG printf ("script_engine: log_show called\n"); +#endif log_window_show (); @@ -679,7 +736,9 @@ /* se_t *se = (se_t *) JS_GetContextPrivate(cx); */ +#ifdef LOG printf ("script_engine: open_show called\n"); +#endif file_dialog_show (); @@ -691,7 +750,9 @@ /* se_t *se = (se_t *) JS_GetContextPrivate(cx); */ +#ifdef LOG printf ("script_engine: open_mrl_show called\n"); +#endif open_mrl_show (); @@ -703,7 +764,9 @@ /* se_t *se = (se_t *) JS_GetContextPrivate(cx); */ +#ifdef LOG printf ("script_engine: stream_info_show called\n"); +#endif stream_info_show (); @@ -715,7 +778,9 @@ /* se_t *se = (se_t *) JS_GetContextPrivate(cx); */ +#ifdef LOG printf ("script_engine: run_wizards called\n"); +#endif run_wizards (TRUE); @@ -728,7 +793,9 @@ se_t *se = (se_t *) JS_GetContextPrivate(cx); int speed; +#ifdef LOG printf ("script_engine: set_speed called\n"); +#endif if (argc!=1) { @@ -767,7 +834,9 @@ se_t *se = (se_t *) JS_GetContextPrivate(cx); int volume; +#ifdef LOG printf ("script_engine: set_volume called\n"); +#endif if (argc!=1) { @@ -806,7 +875,9 @@ se_t *se = (se_t *) JS_GetContextPrivate(cx); int zoom; +#ifdef LOG printf ("script_engine: set_zoom called\n"); +#endif if (argc!=1) { @@ -828,7 +899,9 @@ if (zoom>XINE_VO_ZOOM_MAX) zoom = XINE_VO_ZOOM_MAX; +#ifdef LOG printf ("script_engine: zoom is %d\n", zoom); +#endif if (pthread_mutex_trylock (&engine_lock)) { se->print_cb (se->print_cb_data, @@ -850,7 +923,9 @@ se_t *se = (se_t *) JS_GetContextPrivate(cx); int zoom; +#ifdef LOG printf ("script_engine: set_video_size called\n"); +#endif if (argc!=1) { @@ -878,7 +953,9 @@ se_t *se = (se_t *) JS_GetContextPrivate(cx); int fs; +#ifdef LOG printf ("script_engine: set_fullscreen called\n"); +#endif if (argc==1) { @@ -905,7 +982,9 @@ se_t *se = (se_t *) JS_GetContextPrivate(cx); int aspect; +#ifdef LOG printf ("script_engine: set_aspect called\n"); +#endif if (argc==1) { @@ -933,7 +1012,9 @@ JSString *str; char *id = NULL; +#ifdef LOG printf ("script_engine: js_set_vis called\n"); +#endif if (pthread_mutex_trylock (&engine_lock)) { se->print_cb (se->print_cb_data, "sorry, xine engine is busy"); @@ -974,7 +1055,9 @@ JSString *str; char *fname = NULL; +#ifdef LOG printf ("script_engine: js_snapshot called\n"); +#endif if (pthread_mutex_trylock (&engine_lock)) { se->print_cb (se->print_cb_data, "sorry, xine engine is busy"); @@ -1008,7 +1091,9 @@ /* se_t *se = (se_t *) JS_GetContextPrivate(cx); */ xine_event_t event; +#ifdef LOG printf ("script_engine: input_up called\n"); +#endif event.type = 0; event.data = NULL; @@ -1027,7 +1112,9 @@ /* se_t *se = (se_t *) JS_GetContextPrivate(cx); */ xine_event_t event; +#ifdef LOG printf ("script_engine: input_down called\n"); +#endif event.type = 0; event.data = NULL; @@ -1046,7 +1133,9 @@ /* se_t *se = (se_t *) JS_GetContextPrivate(cx); */ xine_event_t event; +#ifdef LOG printf ("script_engine: input_left called\n"); +#endif event.type = 0; event.data = NULL; @@ -1065,7 +1154,9 @@ /* se_t *se = (se_t *) JS_GetContextPrivate(cx); */ xine_event_t event; +#ifdef LOG printf ("script_engine: input_right called\n"); +#endif event.type = 0; event.data = NULL; @@ -1084,7 +1175,9 @@ /* se_t *se = (se_t *) JS_GetContextPrivate(cx); */ xine_event_t event; +#ifdef LOG printf ("script_engine: input_select called\n"); +#endif event.type = 0; event.data = NULL; @@ -1103,7 +1196,9 @@ /* se_t *se = (se_t *) JS_GetContextPrivate(cx); */ xine_event_t event; +#ifdef LOG printf ("script_engine: input_menu1 called\n"); +#endif event.type = 0; event.data = NULL; @@ -1122,7 +1217,9 @@ /* se_t *se = (se_t *) JS_GetContextPrivate(cx); */ xine_event_t event; +#ifdef LOG printf ("script_engine: input_menu2 called\n"); +#endif event.type = 0; event.data = NULL; @@ -1141,7 +1238,9 @@ /* se_t *se = (se_t *) JS_GetContextPrivate(cx); */ xine_event_t event; +#ifdef LOG printf ("script_engine: input_menu3 called\n"); +#endif event.type = 0; event.data = NULL; @@ -1160,7 +1259,9 @@ /* se_t *se = (se_t *) JS_GetContextPrivate(cx); */ xine_event_t event; +#ifdef LOG printf ("script_engine: input_previous called\n"); +#endif event.type = 0; event.data = NULL; @@ -1179,7 +1280,9 @@ /* se_t *se = (se_t *) JS_GetContextPrivate(cx); */ xine_event_t event; +#ifdef LOG printf ("script_engine: input_next called\n"); +#endif event.type = 0; event.data = NULL; @@ -1198,7 +1301,9 @@ /* se_t *se = (se_t *) JS_GetContextPrivate(cx); */ +#ifdef LOG printf ("script_engine: dummy called\n"); +#endif /* argc @@ -1294,7 +1399,9 @@ } static void controls_JSDestructor (JSContext *cx, JSObject *obj) { +#ifdef LOG printf ("script_engine: controls destructor called\n"); +#endif } @@ -1311,8 +1418,6 @@ JSObject *controls_obj; - printf ("script_engine: create_controls_object\n"); - controls_obj = JS_DefineObject (se->cx, se->global, "controls", &controls_JSClass, NULL, 0); @@ -1344,7 +1449,9 @@ se_t *se = (se_t *) JS_GetContextPrivate(cx); +#ifdef LOG printf ("scripte_engine: JSError '%s'\n", message); +#endif if (se->print_cb) se->print_cb (se->print_cb_data, (char *) message); Index: server.c =================================================================== RCS file: /cvsroot/xine/gnome-xine/src/server.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- server.c 1 Feb 2003 23:30:10 -0000 1.1 +++ server.c 6 Mar 2003 16:51:08 -0000 1.2 @@ -259,8 +259,10 @@ /* server filename */ snprintf (filename, 1024, SOCKET_FILENAME, getenv ("HOME")); +#ifdef LOG printf ("server: trying to connect to already running instance of gxine (%s)...\n", filename); +#endif client_fd = socket (AF_UNIX, SOCK_STREAM, 0); @@ -284,7 +286,9 @@ strcpy (serv_adr.sun_path, filename); if (connect (client_fd, (struct sockaddr *) &serv_adr, sizeof (serv_adr)) < 0) { +#ifdef LOG perror ("connect"); +#endif return 0; } Index: skin_window.c =================================================================== RCS file: /cvsroot/xine/gnome-xine/src/skin_window.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- skin_window.c 1 Feb 2003 23:30:10 -0000 1.2 +++ skin_window.c 6 Mar 2003 16:51:09 -0000 1.3 @@ -24,6 +24,7 @@ #include <config.h> #include <stdio.h> +#include <stdlib.h> #include <string.h> #include <inttypes.h> @@ -35,10 +36,42 @@ #include "utils.h" #include "xmlparser.h" +typedef struct view_s view_t; + +struct view_s { + + char *basename; + + char *id; + int w, h; + + GList *subviews; + + GtkWidget *window; + GdkPixmap *bg; + GdkBitmap *mask; + +}; + +typedef struct subview_s subview_t; + +struct subview_s { + + view_t *parent; + + char *id; + int zIndex; + int x, y; + + GdkPixbuf *pix; +}; + +#define MAXPATH 1024 + #if 0 static void skin_panel_motion (GtkWidget *widget, GdkEventMotion *event, gpointer callback_data) { - GtkWidget *window = (GtkWidget *callback_data); + GtkWidget *window = (GtkWidget *) callback_data; XEvent ev; gint i = 0; @@ -66,37 +99,16 @@ } #endif -typedef struct view_s view_t; - -struct view_s { - - char *basename; - - char *id; - int w, h; - - GList *subviews; - - GtkWidget *window; - GdkPixmap *bg; - GdkBitmap *mask; - -}; - -typedef struct subview_s subview_t; - -struct subview_s { +gint subvzcomp (gconstpointer a, gconstpointer b) { - view_t *parent; + subview_t *sa, *sb; - char *id; - int zIndex; - int x, y; + sa = (subview_t *) a; + sb = (subview_t *) b; - GdkPixbuf *pix; -}; + return sa->zIndex - sb->zIndex; +} -#define MAXPATH 1024 static subview_t *create_subview (xml_node_t *xsubview, view_t *view) { @@ -117,35 +129,62 @@ if (img_name) { + char *transparency_color_str; + GdkPixbuf *pix; + snprintf (filename, MAXPATH, "%s/%s", view->basename, img_name); printf ("skin_window: creating subview '%s' at %d/%d/%d, bg '%s'\n", subview->id, subview->x, subview->y, subview->zIndex, filename); - subview->pix = gdk_pixbuf_new_from_file (filename, NULL); + pix = gdk_pixbuf_new_from_file (filename, NULL); - if ( sscanf (xml_parser_get_property (xsubview, "transparencyColor"), "#%x", - &color) == 1) { - int r, g, b; - - r = (color & 0xff0000) >> 16; - g = (color & 0x00ff00) >> 8; - b = color & 0x0000ff ; - - printf ("skin_window: transparent color is %02x %02x %02x\n", - r, g, b); + if (!pix) + subview->pix = NULL; + else { + GdkPixbuf *pix_tmp; + + /* + * get rid of loaded alpha channel + */ - subview->pix = gdk_pixbuf_add_alpha (subview->pix, TRUE, r, g, b); + pix_tmp = pix; + pix = gdk_pixbuf_composite_color_simple (pix_tmp, + gdk_pixbuf_get_width (pix_tmp), + gdk_pixbuf_get_height (pix_tmp), + GDK_INTERP_NEAREST, + 255, + 20, 0, 9910); + gdk_pixbuf_unref (pix_tmp); + + + transparency_color_str = xml_parser_get_property (xsubview, "transparencyColor"); + if ( transparency_color_str + && (sscanf (transparency_color_str, "#%x", &color) == 1) ) { + int r, g, b; + + r = (color & 0xff0000) >> 16; + g = (color & 0x00ff00) >> 8; + b = color & 0x0000ff ; + + printf ("skin_window: transparent color is %02x %02x %02x\n", + r, g, b); + + subview->pix = gdk_pixbuf_add_alpha (pix, TRUE, r, g, b); + } else + subview->pix = pix; } } else subview->pix = NULL; return subview; } -static view_t *create_view (xml_node_t *xview, const char *basename) { +static view_t *create_view (xml_node_t *xview, const char *basename, + int view_num) { xml_node_t *node; view_t *view; + GList *n; view = (view_t *) malloc (sizeof (view_t)); @@ -153,6 +192,11 @@ view->h = xml_parser_get_property_int (xview, "height", 0); view->id = xml_parser_get_property (xview, "id"); + if (!view->w || !view->h) { + free (view); + return NULL; + } + view->basename = strdup (basename); view->subviews = NULL; @@ -163,8 +207,12 @@ while (node) { if (!strcasecmp (node->name, "subview")) { - view->subviews = g_list_append (view->subviews, - create_subview (node, view)); + + subview_t *subview; + + subview = create_subview (node, view); + + view->subviews = g_list_insert_sorted (view->subviews, subview, subvzcomp); } node = node->next; @@ -176,48 +224,79 @@ gtk_widget_set_usize (view->window, view->w, view->h); - view->bg = gdk_pixmap_new (view->window->window, view->w, view->h, -1); + gtk_widget_realize (view->window); - /* gdk_pixbuf_render_pixmap_and_mask (pix_alpha, &panel_bg, &panel_mask, 1); */ + view->bg = gdk_pixmap_new (view->window->window, view->w, view->h, -1); + view->mask = gdk_pixmap_new (view->window->window, view->w, view->h, 1); - gtk_widget_realize (view->window); + { + GdkGC *gc; + + gc = gdk_gc_new (view->mask); + + gdk_draw_rectangle (view->mask, gc, TRUE, 0, 0, view->w, view->h); + } + + /* + * render subviews + */ + + n = g_list_first (view->subviews); + while (n) { + subview_t *s; + + s = (subview_t *) n->data; + + if (s->pix) { + printf ("rendering subview '%s'\n", s->id); + + gdk_draw_pixbuf (view->bg, NULL, s->pix, 0, 0, + s->x, s->y, -1, -1, GDK_RGB_DITHER_MAX, 0, 0); + + gdk_pixbuf_render_threshold_alpha (s->pix, view->mask, + 0, 0, s->x, s->y, -1, -1, 1); + } + + n = g_list_next (n); + } gdk_window_set_back_pixmap (view->window->window, view->bg, 0); - /* gdk_window_shape_combine_mask (view->window->window, view->panel_mask, 0, 0); */ + gdk_window_shape_combine_mask (view->window->window, view->mask, 0, 0); gdk_window_set_decorations (view->window->window, 0); gtk_window_set_policy (GTK_WINDOW (view->window), FALSE, FALSE, FALSE); + /* if (!view_num) */ + gtk_widget_show_all (view->window); + return view; } static void create_theme (xml_node_t *theme, char *basename) { xml_node_t *node; + int view_num; printf ("skin_window: theme title ='%s'\n", xml_parser_get_property (theme, "title")); - node = theme->child; + node = theme->child; view_num = 0; while (node) { if (!strcasecmp (node->name, "view")) { - create_view (node, basename); + create_view (node, basename, view_num++); } node = node->next; } } -GtkWidget *create_skin_window (void) { +void create_skin_window (void) { - GtkWidget *window; - int w, h; - GdkPixbuf *pix, *pix_alpha; - GdkPixmap *panel_bg; - GdkBitmap *panel_mask; - char *skinfile = "/home/guenter/projects/video/gnome-xine/skins/plus/bionic_d.wms"; + /* char *skinfile = "/home/guenter/projects/video/gnome-xine/skins/plus/bionic_d.wms"; */ + char *skinfile = "/home/guenter/projects/video/gnome-xine/skins/xbox_live/xlive.wms"; + /* char *skinfile = "/home/guenter/projects/video/gnome-xine/skins/kenwood/kenwood.wms"; */ char *xml_data; xml_node_t *tree, *node; @@ -225,7 +304,7 @@ xml_data = read_entire_file_unicode (skinfile); - /* printf ("skin_window: ascii: %s\n", xml_data); */ + printf ("skin_window: ascii: %s\n", xml_data); printf ("skin_window: parsing...\n"); @@ -233,7 +312,7 @@ if (xml_parser_build_tree (&tree)<0) { printf ("skin_window: error: xml parser failed\n"); - return NULL; + return; } node = tree; @@ -242,37 +321,18 @@ printf ("skin_window: node->name=%s\n", node->name); if (!strcasecmp (node->name, "theme")) { - create_theme (node, "/home/guenter/projects/video/gnome-xine/skins/plus"); + gchar *skin_dir, *dir_sep; + + skin_dir = strdup (skinfile); + dir_sep = strrchr (skin_dir, '/'); + if (dir_sep) + *dir_sep = '\0'; + printf ("skinwindow: skin_dir: %s\n", skin_dir); + + create_theme (node, skin_dir); break; } node = node->next; } - - window = gtk_window_new(GTK_WINDOW_TOPLEVEL); - - gtk_widget_set_app_paintable (window, TRUE); - - pix = gdk_pixbuf_new_from_file ("/home/guenter/projects/video/gnome-xine/skins/plus/main_body_blue.png", NULL); - - pix_alpha = gdk_pixbuf_add_alpha (pix, TRUE, 0xff, 0x00, 0xff); - - w = gdk_pixbuf_get_width (pix_alpha); - h = gdk_pixbuf_get_height (pix_alpha); - - gtk_widget_set_usize (window, w, h); - - gdk_pixbuf_render_pixmap_and_mask (pix_alpha, &panel_bg, &panel_mask, 1); - - gtk_widget_realize (window); - - gdk_window_set_back_pixmap (window->window, panel_bg, 0); - - /* gtk_widget_shape_combine_mask (window, panel_mask, 0, 0); */ - gdk_window_shape_combine_mask (window->window, panel_mask, 0, 0); - - gdk_window_set_decorations (window->window, 0); - gtk_window_set_policy (GTK_WINDOW (window), FALSE, FALSE, FALSE); - - return window; } Index: skin_window.h =================================================================== RCS file: /cvsroot/xine/gnome-xine/src/skin_window.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- skin_window.h 1 Jan 2003 16:15:50 -0000 1.1 +++ skin_window.h 6 Mar 2003 16:51:10 -0000 1.2 @@ -26,6 +26,6 @@ #include <gtk/gtk.h> -GtkWidget *create_skin_window (void); +void create_skin_window (void); #endif |