sinek/src Makefile.am,1.12,1.13 about.c,1.16,1.17 control.c,1.28,1.29 gtkxine.c,1.12,1.13 guile.c,1.8,1.9 keys.c,1.45,1.46 main.c,1.26,1.27 osd.c,1.20,1.21 prefs.c,1.28,1.29 sinek.c,1.11,1.12 video.c,1.30,1.31

[email protected] Mon, 17 Feb 2003 00:26:07 -0800
Newsgroups gmane.comp.video.sinek.cvs
Message-ID <[email protected]>
Update of /cvsroot/sinek/sinek/src
In directory sc8-pr-cvs1:/tmp/cvs-serv23278/src

Modified Files:
	Makefile.am about.c control.c gtkxine.c guile.c keys.c main.c 
	osd.c prefs.c sinek.c video.c 
Log Message:
fixes all over the place


Index: Makefile.am
===================================================================
RCS file: /cvsroot/sinek/sinek/src/Makefile.am,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- Makefile.am	23 Jan 2003 08:12:06 -0000	1.12
+++ Makefile.am	17 Feb 2003 08:25:59 -0000	1.13
@@ -9,6 +9,10 @@
 guile_c = guile.c
 endif
 
+if DO_X11
+gtkxine_driver_c = gtkxine_x11.c
+endif
+
 bin_PROGRAMS = sinek
 
 sinek_LDADD = @LIBS@ @XTEST_LIBS@ $(XINE_LIBS) $(GTK_LIBS) $(GUILE_LDFLAGS) $(INTLLIBS)
@@ -30,4 +34,5 @@
 	$(guile_c) \
 	about.c \
 	gtkxine.c \
+	$(gtkxine_driver_c) \
 	xml.c

Index: about.c
===================================================================
RCS file: /cvsroot/sinek/sinek/src/about.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- about.c	16 Jan 2003 07:02:06 -0000	1.16
+++ about.c	17 Feb 2003 08:26:00 -0000	1.17
@@ -21,9 +21,8 @@
 	char *tmp;
 	int major, minor, sub;
 
-	major = gtk_xine_get_major_version(GTK_XINE(sinek.xine));
-	minor = gtk_xine_get_minor_version(GTK_XINE(sinek.xine));
-	sub = gtk_xine_get_sub_version(GTK_XINE(sinek.xine));
+	g_object_get(G_OBJECT(sinek.xine), "version_major", &major, "version_minor",
+			&minor, "version_sub", &sub, NULL);
 
 	w = gtk_dialog_new();
 	gtk_dialog_set_has_separator(GTK_DIALOG(w), FALSE);

Index: control.c
===================================================================
RCS file: /cvsroot/sinek/sinek/src/control.c,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -d -r1.28 -r1.29
--- control.c	16 Jan 2003 07:06:33 -0000	1.28
+++ control.c	17 Feb 2003 08:26:00 -0000	1.29
@@ -86,6 +86,7 @@
 	GtkWidget *control_win;
 	GtkWidget *vb, *hb, *hb2, *bb;
 	GtkWidget *lab, *b;
+	int vol;
 
 	register_icons();
 
@@ -150,7 +151,8 @@
 	gtk_widget_show(lab);
 	gtk_box_pack_start(GTK_BOX(hb2), lab, FALSE, FALSE, 0);
 
-	vol_adj = gtk_adjustment_new(gtk_xine_get_volume(GTK_XINE(sinek.xine)), 0, 100, 1, 0, 0);
+	g_object_get(G_OBJECT(sinek.xine), "volume", &vol, NULL);
+	vol_adj = gtk_adjustment_new(vol, 0, 100, 1, 0, 0);
 	vol_wid = gtk_hscale_new(GTK_ADJUSTMENT(vol_adj));
 	gtk_widget_show(vol_wid);
 	gtk_box_pack_start(GTK_BOX(hb2), vol_wid, TRUE, TRUE, 0);
@@ -209,7 +211,7 @@
 }
 
 
-void control_mrl(char *mrl)
+void control_mrl(const char *mrl)
 {
 	gtk_entry_set_text(GTK_ENTRY(mrl_wid), mrl);
 	gtk_editable_set_position(GTK_EDITABLE(mrl_wid), -1);
@@ -239,18 +241,16 @@
 	gtk_entry_set_text(GTK_ENTRY(info_wid), buf);
 }
 
-
 static void cb_volume(GtkAdjustment *vadj)
 {
-	gtk_xine_set_volume(GTK_XINE(sinek.xine), vadj->value);
+	g_object_set(G_OBJECT(sinek.xine), "volume", vadj->value, NULL);
 }
 
-
 static int cb_lala(GtkWidget *w, GdkEventButton *ev, gpointer data)
 {
 	if(sinek.seeking)
 	{
-		video_seek(GTK_ADJUSTMENT(time_adj)->value);
+		g_object_set(G_OBJECT(sinek.xine), "time", GTK_ADJUSTMENT(time_adj)->value, NULL);
 		sinek.seeking = 0;
 	}
 	return FALSE;
@@ -263,7 +263,7 @@
 
 	mrl = gtk_entry_get_text(GTK_ENTRY(mrl_wid));
 	if(!mrl || *mrl == 0) return;
-	video_play((char *)mrl);
+	video_play(mrl);
 }
 
 
@@ -281,7 +281,7 @@
 	m = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(m_spin));
 	s = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(s_spin));
 	secs = h * 3600 + m * 60 + s;
-	video_seek(secs);
+	g_object_set(G_OBJECT(sinek.xine), "time", secs, NULL);
 	gtk_widget_hide(win);
 }
 

Index: gtkxine.c
===================================================================
RCS file: /cvsroot/sinek/sinek/src/gtkxine.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- gtkxine.c	26 Jan 2003 20:49:05 -0000	1.12
+++ gtkxine.c	17 Feb 2003 08:26:01 -0000	1.13
@@ -9,6 +9,7 @@
 */
 
 #include "gtkxine.h"
+#include "gtkxine_x11.h"
 #include <math.h>
 #include <string.h>
 #include <libintl.h>
@@ -17,93 +18,58 @@
 #include <config.h>
 #endif
 
[...1230 lines suppressed...]
 
-	if (gtk_xine_stream_has_video (GTK_XINE (x))) {
+	g_object_get (G_OBJECT (x), "has_video", &val, NULL);
+	if ((int) val) {
 		g_print ("'%s' has video, displaying video window\n", argv[1]);
-		gtk_widget_show (videowin);
+		gtk_widget_show_all (videowin);
+		gtk_window_fullscreen (GTK_WINDOW (videowin));
 	}
 
-	gdk_threads_enter ();
-	gtk_main();
-	gdk_threads_leave ();
-	gtk_widget_destroy (x);
+	while (GTK_IS_WIDGET (x))
+		g_main_context_iteration (NULL, TRUE);
+	g_print ("Done.  bye-bye!\n");
 
 	return 0;
 }

Index: guile.c
===================================================================
RCS file: /cvsroot/sinek/sinek/src/guile.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- guile.c	16 Jan 2003 07:10:06 -0000	1.8
+++ guile.c	17 Feb 2003 08:26:01 -0000	1.9
@@ -104,7 +104,7 @@
 
 	msec = gh_scm2ulong(arg);
 	SCM_DEFER_INTS;
-	video_seek(msec / 100);
+	g_object_set(G_OBJECT(sinek.xine), "time", msec / 100, NULL);
 	SCM_ALLOW_INTS;
 	return SCM_EOL;
 }
@@ -116,8 +116,9 @@
 	unsigned long cur, total;
 
 	SCM_DEFER_INTS;
-	cur = gtk_xine_get_current_time(GTK_XINE(sinek.xine)) * 100;
-	total = gtk_xine_get_stream_length(GTK_XINE(sinek.xine)) * 100;
+	g_object_get(G_OBJECT(sinek.xine), "time", &cur, "length", &total, NULL);
+	cur *= 100;
+	total *= 100;
 	SCM_ALLOW_INTS;
 	ret = gh_cons(gh_ulong2scm(cur), ret);
 	ret = gh_cons(gh_ulong2scm(total), ret);

Index: keys.c
===================================================================
RCS file: /cvsroot/sinek/sinek/src/keys.c,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -d -r1.45 -r1.46
--- keys.c	21 Jan 2003 04:52:49 -0000	1.45
+++ keys.c	17 Feb 2003 08:26:01 -0000	1.46
@@ -703,34 +703,26 @@
 
 		case CMD_QUIT:
 			sinek.playing = 0;
-			scrsaver_enable();
 			gtk_widget_destroy(sinek.xine);
 			gtk_main_quit();
 			break;
 
 		case CMD_PLAY:
-			scrsaver_disable();
-			if (gtk_xine_get_status(GTK_XINE(sinek.xine)) != GTK_XINE_STATUS_PLAYING) {
-				gtk_xine_load(GTK_XINE(sinek.xine), sinek.mrl);
-				gtk_xine_play(GTK_XINE(sinek.xine));
-			}
-			else
-				gtk_xine_set_speed(GTK_XINE(sinek.xine), GTK_XINE_PLAYBACK_SPEED_NORMAL);
+			g_object_set(G_OBJECT(sinek.xine), "speed", GTK_XINE_SPEED_NORMAL, NULL);
 			sinek.pause = 0;
 			break;
 
 		case CMD_PAUSE:
 			if(sinek.pause)
-				gtk_xine_set_speed(GTK_XINE(sinek.xine), GTK_XINE_PLAYBACK_SPEED_NORMAL);
+				gtk_xine_set_speed(GTK_XINE(sinek.xine), GTK_XINE_SPEED_NORMAL);
 			else
-				gtk_xine_set_speed(GTK_XINE(sinek.xine), GTK_XINE_PLAYBACK_SPEED_PAUSE);
+				gtk_xine_set_speed(GTK_XINE(sinek.xine), GTK_XINE_SPEED_PAUSE);
 			sinek.pause = ~sinek.pause;
 			break;
 
 		case CMD_STOP:
 			sinek.playing = 0;
-			gtk_xine_stop(GTK_XINE(sinek.xine));
-			scrsaver_enable();
+			g_object_set(G_OBJECT(sinek.xine), "speed", GTK_XINE_SPEED_STOP, NULL);
 			break;
 
 		case CMD_NEXT:
@@ -751,13 +743,13 @@
 
 		case CMD_SPEED_FAST:
 			tmp = gtk_xine_get_speed(GTK_XINE(sinek.xine));
-			if(tmp != GTK_XINE_PLAYBACK_SPEED_PAUSE && tmp < GTK_XINE_PLAYBACK_SPEED_FOUR_FAST)
+			if(tmp != GTK_XINE_SPEED_PAUSE && tmp < GTK_XINE_SPEED_FAST_4)
 				gtk_xine_set_speed(GTK_XINE(sinek.xine), tmp * 2);
 			break;
 
 		case CMD_SPEED_SLOW:
 			tmp = gtk_xine_get_speed(GTK_XINE(sinek.xine));
-			if(tmp > GTK_XINE_PLAYBACK_SPEED_QUARTER_SLOW)
+			if(tmp > GTK_XINE_SPEED_SLOW_4)
 				gtk_xine_set_speed(GTK_XINE(sinek.xine), tmp / 2);
 			break;
 
@@ -788,7 +780,7 @@
 			break;
 
 		case CMD_SHOW_VIDEO:
-			video_show();
+			gtk_widget_show(sinek.videowin);
 			break;
 
 		case CMD_SHOW_CONTROLS:
@@ -808,10 +800,14 @@
 			break;
 
 		case CMD_TOGGLE_FULLSCREEN:
-			if(sinek.video_mode == VIDEO_FULLSCREEN)
-				gtk_xine_set_fullscreen(GTK_XINE(sinek.xine), 0);
-			else
-				gtk_xine_set_fullscreen(GTK_XINE(sinek.xine), 1);
+			if (sinek.video_mode == VIDEO_FULLSCREEN) {
+				gtk_window_unfullscreen(GTK_WINDOW(sinek.videowin));
+				sinek.video_mode = VIDEO_WINDOW;
+			}
+			else {
+				gtk_window_fullscreen(GTK_WINDOW(sinek.videowin));
+				sinek.video_mode = VIDEO_FULLSCREEN;
+			}
 			break;
 
 		case CMD_TOGGLE_ASPECT:
@@ -888,21 +884,26 @@
 			break;
 
 		case CMD_WINDOW_1x1:
-			gtk_xine_set_fullscreen(GTK_XINE(sinek.xine), 0);
+			gtk_window_unfullscreen(GTK_WINDOW(sinek.xine));
+			if (sinek.video_mode != VIDEO_NONE)
+				sinek.video_mode = VIDEO_WINDOW;
 			video_scale_abs(1);
 			break;
 
 		case CMD_WINDOW_2x2:
-			gtk_xine_set_fullscreen(GTK_XINE(sinek.xine), 0);
+			gtk_window_unfullscreen(GTK_WINDOW(sinek.xine));
+			if (sinek.video_mode != VIDEO_NONE)
+				sinek.video_mode = VIDEO_WINDOW;
 			video_scale_abs(2);
 			break;
 
 		case CMD_WINDOW_FULLSCREEN:
-			gtk_xine_set_fullscreen(GTK_XINE(sinek.xine), 1);
+			gtk_window_fullscreen(GTK_WINDOW(sinek.xine));
 			break;
 
 		case CMD_WINDOW_BACKGROUND:
 			gtk_widget_hide(sinek.videowin);
+			sinek.video_mode = VIDEO_HIDDEN;
 			break;
 
 		case CMD_WINDOW_REDUCE:
@@ -971,8 +972,8 @@
 		case CMD_GOTO_MARK_7:
 		case CMD_GOTO_MARK_8:
 		case CMD_GOTO_MARK_9:
-			video_seek(sinek.marks[cmd - CMD_GOTO_MARK_0]);
-			sinek.marks[0] = gtk_xine_get_stream_length(GTK_XINE(sinek.xine));
+			g_object_set(G_OBJECT(sinek.xine), "time", sinek.marks[cmd - CMD_GOTO_MARK_0], NULL);
+			g_object_get(G_OBJECT(sinek.xine), "length", &sinek.marks[0], NULL);
 			break;
 
 		case CMD_SET_MARK_1:
@@ -984,7 +985,7 @@
 		case CMD_SET_MARK_7:
 		case CMD_SET_MARK_8:
 		case CMD_SET_MARK_9:
-			sinek.marks[cmd - CMD_SET_MARK_1 + 1] = gtk_xine_get_stream_length(GTK_XINE(sinek.xine));
+			g_object_get(G_OBJECT(sinek.xine), "length", &sinek.marks[cmd - CMD_SET_MARK_1 + 1], NULL);
 			break;
 	}
 }

Index: main.c
===================================================================
RCS file: /cvsroot/sinek/sinek/src/main.c,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -d -r1.26 -r1.27
--- main.c	26 Jan 2003 20:49:05 -0000	1.26
+++ main.c	17 Feb 2003 08:26:01 -0000	1.27
@@ -37,7 +37,6 @@
 {
 	memset(&sinek, 0, sizeof(sinek));
 	sinek.repeat_all = ~0;
-	sinek.video_mode = VIDEO_WINDOW;
 	sinek.geo_w = 320;
 	sinek.geo_h = 180;
 
@@ -52,15 +51,9 @@
 
 	gtk_init(&argc, &argv);
 
-	if(!XInitThreads())
-	{
-		puts(_("XInitThreads() failed, your X library is not thread-safe."));
-		exit(5);
-	}
-
+	sinek.xine = gtk_xine_new(NULL);
 	prefs_init(argc, argv);
-
-	sinek.xine = sinek_init();
+	sinek_init();
 
 	key_init();
 	wm_build(control_build);
@@ -69,7 +62,6 @@
 
 	gtk_xine_event_listener(GTK_XINE(sinek.xine), event_listener, &sinek);
 	pl_init();
-	scrsaver_init();
 	g_timeout_add(500, (GSourceFunc)second_update, NULL);
 
 	osd_init();
@@ -101,7 +93,7 @@
 			if(sinek.playing)
 			{
 				if(sinek.repeat_one)
-					video_seek(0);
+					g_object_set(G_OBJECT(sinek.xine), "time", 0, NULL);
 				else
 					pl_next();
 			}
@@ -114,11 +106,9 @@
 		{
 			int pos, length;
 			
-			length = gtk_xine_get_stream_length(GTK_XINE(sinek.xine));
-			if (length) {
-				pos = gtk_xine_get_current_time(GTK_XINE(sinek.xine));
+			g_object_get(G_OBJECT(sinek.xine), "time", &pos, "length", &length, NULL);
+			if (length)
 				control_update_slider(pos, length);
-			}
 		}
 		if(sinek.osd_subtitles) osd_update();
 		if(++sinek.cursor_timer == 3) video_cursor(0);

Index: osd.c
===================================================================
RCS file: /cvsroot/sinek/sinek/src/osd.c,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -d -r1.20 -r1.21
--- osd.c	19 Jan 2003 08:35:35 -0000	1.20
+++ osd.c	17 Feb 2003 08:26:01 -0000	1.21
@@ -107,7 +107,8 @@
 		}
 		return;
 	}
-	if (sinek.osd_subtitles && (pos = gtk_xine_get_current_time(GTK_XINE(sinek.xine))))
+	g_object_get(G_OBJECT(sinek.xine), "time", &pos, NULL);
+	if (sinek.osd_subtitles && pos)
 	{
 		sub = subtitle_find(pos * 100);
 		if (sub) {

Index: prefs.c
===================================================================
RCS file: /cvsroot/sinek/sinek/src/prefs.c,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -d -r1.28 -r1.29
--- prefs.c	21 Jan 2003 04:52:49 -0000	1.28
+++ prefs.c	17 Feb 2003 08:26:01 -0000	1.29
@@ -68,13 +68,13 @@
 
 static void print_version(void)
 {
+	gpointer maj, min, sub;
+
+	g_object_get (G_OBJECT (sinek.xine), "version_major", &maj, "version_minor", &min, "version_sub", &sub, NULL);
 	g_print(_("Sinek v%s (Video Player)\n"), VERSION);
 	g_print(_("built with xine library v%d.%d.%d, using v%d.%d.%d.\n"),
 			GTK_XINE_MAJOR_VERSION, GTK_XINE_MINOR_VERSION,
-			GTK_XINE_SUB_VERSION,
-			gtk_xine_get_major_version(GTK_XINE(sinek.xine)),
-			gtk_xine_get_minor_version(GTK_XINE(sinek.xine)),
-			gtk_xine_get_sub_version(GTK_XINE(sinek.xine)));
+			GTK_XINE_SUB_VERSION, (int) maj, (int) min, (int) sub);
 }
 
 static void print_usage(int to_stderr)
@@ -146,7 +146,7 @@
 				break;
 
 			case 'b':
-				sinek.video_mode = VIDEO_BACKGROUND;
+				sinek.video_mode = VIDEO_HIDDEN;
 				break;
 
 			case 'g':
@@ -282,12 +282,8 @@
 
 static void cb_ok(GtkWidget *w, GtkWidget *win)
 {
-	char *tmp;
-
 	prefs_apply_changes();
-	tmp = g_strconcat(g_get_home_dir(), "/.xine/config", NULL);
-	gtk_xine_config_save(GTK_XINE(sinek.xine), tmp);
-	g_free(tmp);
+	gtk_xine_config_save(GTK_XINE(sinek.xine));
 	gtk_widget_hide(win);
 }
 

Index: sinek.c
===================================================================
RCS file: /cvsroot/sinek/sinek/src/sinek.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- sinek.c	19 Jan 2003 08:35:35 -0000	1.11
+++ sinek.c	17 Feb 2003 08:26:01 -0000	1.12
@@ -11,96 +11,46 @@
 #include "common.h"
 #include "gtkxine.h"
 
-extern int translate_point(int x, int y, int *vid_x, int *vid_y);
+static gboolean cb_delete(GtkWidget *window)
+{
+	/* force closing of the video window to merely hide it */
+	gtk_widget_hide(window);
+	return TRUE;
+}
 
-GtkWidget *sinek_init(void)
+void sinek_init(void)
 {
-	GtkWidget *videowin, *videoframe;
-	GtkXine *xine;
+	GtkWidget *window, *xine;
 	const char *audio, *video;
-	char *conf;
 	
-	sinek.mrl = NULL;
+	xine = sinek.xine;
 
-	xine = GTK_XINE(gtk_xine_new());
-	conf = g_build_filename(g_get_home_dir(), ".xine", "config", NULL);
-	gtk_xine_config_load(xine, conf);
-	g_free(conf);
+	window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+	gtk_window_set_title(GTK_WINDOW(window), _("Sinek Video Output"));
+	g_signal_connect(G_OBJECT(window), "delete-event", G_CALLBACK(cb_delete), NULL);
+	gtk_container_add(GTK_CONTAINER(window), xine);
+	gtk_widget_show(xine);
+	sinek.videowin = window;
 
 	/* audio stuff */
-	audio = gtk_xine_config_register_string(xine, "audio.driver", "auto");
-	audio = gtk_xine_set_audio_driver(xine, audio);
-	gtk_xine_config_set(xine, "audio.driver", (void *) audio);
+	audio = gtk_xine_config_register_string(GTK_XINE(xine), "audio.driver", "auto");
+	g_object_set(G_OBJECT(xine), "audio_driver", audio, NULL);
+	g_object_get(G_OBJECT(xine), "audio_driver", &audio, NULL);
+	gtk_xine_config_set(GTK_XINE(xine), "audio.driver", audio);
 
 	/* video stuff */
-	videoframe = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-	gtk_window_set_title(GTK_WINDOW(videoframe), "Sinek Video Output");
-	videowin = gtk_drawing_area_new();
-	gtk_container_add(GTK_CONTAINER(videoframe), videowin);
-	sinek.videowin = videoframe;
-
-	video = gtk_xine_config_register_string(xine, "video.driver", "auto");
-	video = gtk_xine_set_video_driver(xine, video, videowin);
-	gtk_xine_config_set(xine, "video.driver", (void *) video);
-
-	/* post audio/video init stuff */
-	gtk_xine_load(xine, NULL);
-	gtk_xine_set_audio_channel(xine, sinek.audio_channel);
-	gtk_xine_set_spu_channel(xine, sinek.spu_channel);
-
-	return GTK_WIDGET(xine);
-}
-
-#if 0
-void sinek_video_event(sinek_type *s, void *event)
-{
-	XEvent *ev = (XEvent *)event;
-	xine_event_t xinev;
-	xine_input_data_t inev;
-	int x, y;
-
-	switch(ev->type)
-	{
-		case MotionNotify:
-			if(translate_point(((XMotionEvent *)ev)->x, ((XMotionEvent *)ev)->y, &x, &y))
-			{
-				xinev.type = XINE_EVENT_INPUT_MOUSE_MOVE;
-				inev.button = 0;
-				inev.x = x;
-				inev.y = y;
-				xinev.data = (void *) &inev;
-				xine_event_send(sinek.stream, &xinev);
-			}
-			break;
-
-		case ButtonPress:
-			if(((XButtonEvent *)ev)->button == 1 && translate_point(((XButtonEvent *)ev)->x, ((XButtonEvent *)ev)->y, &x, &y))
-			{
-				xinev.type = XINE_EVENT_INPUT_MOUSE_BUTTON;
-				inev.button = 1;
-				inev.x = x;
-				inev.y = y;
-				xinev.data = (void *) &inev;
-				xine_event_send(sinek.stream, &xinev);
-			}
-			break;
+//g_signal_connect(G_OBJECT(videoframe), "key-press-event", G_CALLBACK(videowin_key_press), NULL);
+//g_signal_connect(G_OBJECT(videowin), "unrealize", G_CALLBACK(videowin_unrealized_cb), NULL);
+//g_signal_connect(G_OBJECT(videowin), "configure-event", G_CALLBACK(videowin_configure_cb), NULL);
 
-		case ConfigureNotify:
-			s->display_info->win_x = ((XConfigureEvent *)ev)->x;
-			s->display_info->win_y = ((XConfigureEvent *)ev)->y;
-			s->display_info->win_w = ((XConfigureEvent *)ev)->width;
-			s->display_info->win_h = ((XConfigureEvent *)ev)->height;
-			break;
+//g_signal_connect(G_OBJECT(videowin), "clicked", G_CALLBACK(videowin_button_press), NULL);
 
-		case Expose:
-			if(((XExposeEvent *)ev)->count == 0)
-			{
-				xine_gui_send_vo_data(sinek.stream, XINE_GUI_SEND_EXPOSE_EVENT, (void *) ev);
-			}
-			break;
-	}
-	if(ev->type == MyShmEvent)
-		xine_gui_send_vo_data(sinek.stream, XINE_GUI_SEND_COMPLETION_EVENT, (void *) ev);
+	video = gtk_xine_config_register_string(GTK_XINE(xine), "video.driver", "auto");
+	g_object_set(G_OBJECT(xine), "video_driver", video, NULL);
+	g_object_get(G_OBJECT(xine), "video_driver", &video, NULL);
+	gtk_xine_config_set(GTK_XINE(xine), "video.driver", video);
 
+	/* post audio/video init stuff */
+	g_object_set(G_OBJECT(xine), "audio_channel", sinek.audio_channel,
+			"spu_channel", sinek.spu_channel, NULL);
 }
-#endif

Index: video.c
===================================================================
RCS file: /cvsroot/sinek/sinek/src/video.c,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -d -r1.30 -r1.31
--- video.c	19 Jan 2003 08:35:35 -0000	1.30
+++ video.c	17 Feb 2003 08:26:01 -0000	1.31
@@ -17,37 +17,6 @@
 #include <X11/cursorfont.h>
 #include <X11/Xatom.h>
 
-/* missing stuff from X includes */
-#define MWM_HINTS_DECORATIONS (1L << 1)
-#define PROP_MWM_HINTS_ELEMENTS 5
-typedef struct _mwmhints
-{
-	uint32_t flags;
-	uint32_t functions;
-	uint32_t decorations;
-	int32_t input_mode;
-	uint32_t status;
-} MWMHints;
-
-static int video_visible = 42;
-
-int translate_point(int x, int y, int *vid_x, int *vid_y);
-
-void video_show(void)
-{
-	gtk_widget_show(sinek.videowin);
-	if(video_visible != 1) sinek.nr_mapped++;
-	video_visible = 1;
-}
-
-void video_hide(void)
-{
-	gtk_widget_hide(sinek.videowin);
-	if(video_visible == 1) sinek.nr_mapped--;
-	video_visible = 0;
-	if(0 == sinek.nr_mapped) gtk_main_quit();
-}
-
 void video_cursor(int show)
 {
 	static int old = 2;
@@ -65,7 +34,7 @@
 }
 
 
-static int try_subtitle(char *mrl, char *ext)
+static int try_subtitle(const char *mrl, char *ext)
 {
 	gchar *tmp, *tmp2;
 	struct stat mystat;
@@ -97,14 +66,13 @@
 	return ret;
 }
 
-
-int video_play(char *mrl)
+int video_play(const char *mrl)
 {
+	const char *cur;
+	int x;
 	int ret;
 
-	if(!mrl) return(0);
-
-	if(video_visible == 42) video_show();
+	g_return_val_if_fail(mrl != NULL, 0);
 
 	if(NULL == strstr(mrl, "://"))
 	{
@@ -113,13 +81,37 @@
 		if(0 == ret) try_subtitle(mrl, ".srt");
 	}
 
-	if (gtk_xine_load(GTK_XINE(sinek.xine), mrl) && gtk_xine_play(GTK_XINE(sinek.xine)))
-	{
-		int length;
+	/* load mrl */
+	g_object_set(G_OBJECT(sinek.xine), "mrl", mrl, NULL);
+	g_object_get(G_OBJECT(sinek.xine), "mrl", &cur, NULL);
+	if (strcmp(mrl, cur) != 0)
+		return 0;
 
-		length = gtk_xine_get_stream_length(GTK_XINE(sinek.xine));
-		scrsaver_disable();
-		control_update_slider(0, length);
+	/* start playing */
+	switch (sinek.video_mode) {
+		/* XXX: what should we do if VIDEO_FULLSCREEN? */
+		case VIDEO_WINDOW:
+			g_object_get(G_OBJECT(sinek.xine), "has_video", &x, NULL);
+			if (!x) {
+				sinek.video_mode = VIDEO_NONE;
+				gtk_widget_hide(sinek.videowin);
+			}
+			break;
+		case VIDEO_NONE:
+			g_object_get(G_OBJECT(sinek.xine), "has_video", &x, NULL);
+			if (x) {
+				sinek.video_mode = VIDEO_WINDOW;
+				gtk_widget_show(sinek.videowin);
+			}
+			break;
+	}
+
+	gtk_xine_set_speed(GTK_XINE(sinek.xine), GTK_XINE_SPEED_NORMAL);
+//	g_object_set(G_OBJECT(sinek.xine), "speed", GTK_XINE_SPEED_NORMAL, NULL);
+	g_object_get(G_OBJECT(sinek.xine), "speed", &x, NULL);
+	if (x == GTK_XINE_SPEED_NORMAL) {
+		g_object_get(G_OBJECT(sinek.xine), "length", &x, NULL);
+		control_update_slider(0, x);
 		control_mrl(mrl);
 		sinek.playing = -1;
 		return 1;
@@ -127,14 +119,6 @@
 	return 0;
 }
 
-
-void video_seek(int secs)
-{
-	scrsaver_disable();
-	gtk_xine_play_from_time(GTK_XINE(sinek.xine), secs);
-}
-
-
 void video_zoom(int val)
 {
 	int tmp;
@@ -261,7 +245,7 @@
 		case VIDEO_FULLSCREEN:
 			create_window(1, DisplayWidth(display, screen), DisplayHeight(display, screen));
 			break;
-		case VIDEO_BACKGROUND:
+		case VIDEO_HIDE:
 			create_bg_window();
 			XLowerWindow(display, videowin);
 			break;




-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf