annotate Plugins/Visualization/libvisual-proxy/main.c @ 75:56074bfbb565 trunk

[svn] Use the conitional HAVE_FLAC so we won't try to compile it if we shouldn't.
author msameer
date Sat, 29 Oct 2005 17:41:30 -0700
parents fa848bd484d8
children 256b3acc87d4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1 #include <stdlib.h>
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
2 #include <stdio.h>
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
3 #include <unistd.h>
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
4 #include <string.h>
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
5
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
6 #include <audacious/plugin.h>
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
7 #include <audacious/util.h>
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
8 #include <libaudacious/beepctrl.h>
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
9
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
10 #include <SDL.h>
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
11 #include <SDL_thread.h>
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
12
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
13 #include <gtk/gtk.h>
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
14 #include <glib/gi18n.h>
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
15
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
16 #include <libvisual/libvisual.h>
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
17
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
18 #include "config.h"
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
19
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
20 #include "lv_bmp_config.h"
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
21 #include "about.h"
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
22
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
23 #define LV_XMMS_DEFAULT_INPUT_PLUGIN "esd"
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
24
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
25 /* SDL variables */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
26 static SDL_Surface *screen = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
27 static SDL_Color sdlpal[256];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
28 static SDL_Thread *render_thread;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
29 static SDL_mutex *pcm_mutex;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
30 static SDL_Surface *icon;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
31
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
32 /* Libvisual and visualisation variables */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
33 static VisVideo *video;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
34 static VisPalette *pal;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
35
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
36 static char song_name[1024];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
37 static const char *cur_lv_plugin = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
38
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
39 static VisBin *bin = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
40
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
41 static VisSongInfo *songinfo;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
42
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
43 static Options *options;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
44
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
45 static int gl_plug = 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
46
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
47 static gint16 xmmspcm[2][512];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
48
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
49 /* Thread state variables */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
50 static int visual_running = 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
51 static int visual_stopped = 1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
52
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
53 static void lv_bmp_init (void);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
54 static void lv_bmp_cleanup (void);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
55 static void lv_bmp_disable (VisPlugin *);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
56 static void lv_bmp_playback_start (void);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
57 static void lv_bmp_playback_stop (void);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
58 static void lv_bmp_render_pcm (gint16 data[2][512]);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
59
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
60 static int sdl_quit (void);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
61 static void sdl_set_pal (void);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
62 static void sdl_draw (SDL_Surface *screen);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
63 static int sdl_create (int width, int height);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
64 static int sdl_event_handle (void);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
65
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
66 static int visual_upload_callback (VisInput *input, VisAudio *audio, void *private);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
67 static int visual_resize (int width, int height);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
68 static int visual_initialize (int width, int height);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
69 static int visual_render (void*);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
70
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
71 static gint disable_func (gpointer data);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
72 static void dummy (GtkWidget *widget, gpointer data);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
73
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
74 VisPlugin *get_vplugin_info (void);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
75
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
76 VisPlugin lv_bmp_vp =
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
77 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
78 NULL, /* (void*) handle, filled in by xmms */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
79 NULL, /* (char*) Filename, filled in by xmms */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
80 0, /* The session ID for attaching to the control socket */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
81 "libvisual proxy plugin", /* description */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
82 2, /* Numbers of PCM channels wanted in the call to render_pcm */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
83 0, /* Numbers of freq channels wanted in the call to render_freq */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
84 lv_bmp_init, /* init */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
85 lv_bmp_cleanup, /* cleanup */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
86 NULL, /* about */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
87 NULL, /* configure */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
88 lv_bmp_disable, /* disable plugin */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
89 lv_bmp_playback_start, /* playback start */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
90 lv_bmp_playback_stop, /* playback stop */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
91 lv_bmp_render_pcm, /* render pcm */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
92 NULL, /* render freq */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
93 };
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
94
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
95 VisPlugin *get_vplugin_info ()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
96 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
97 return &lv_bmp_vp;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
98 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
99
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
100 static char *lv_bmp_get_songname ()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
101 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
102 return xmms_remote_get_playlist_title (lv_bmp_vp.xmms_session,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
103 xmms_remote_get_playlist_pos (lv_bmp_vp.xmms_session));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
104 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
105
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
106 static void lv_bmp_init ()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
107 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
108 char **argv;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
109 int argc;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
110 int ret;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
111 gchar *msg;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
112 GtkWidget *msgwin;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
113
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
114 if (!visual_is_initialized ()) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
115 argv = g_malloc (sizeof(char*));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
116 argv[0] = g_strdup (_("XMMS plugin"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
117 argc = 1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
118
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
119 visual_init (&argc, &argv);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
120
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
121 g_free (argv[0]);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
122 g_free (argv);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
123 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
124
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
125 #if LV_XMMS_ENABLE_DEBUG
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
126 visual_log_set_verboseness (VISUAL_LOG_VERBOSENESS_HIGH);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
127 #endif
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
128 /*g_print ("Trying to set verboseness\n");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
129 visual_log_set_verboseness (VISUAL_LOG_VERBOSENESS_LOW);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
130 g_print ("Verboseness done\n");*/
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
131
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
132 options = lv_bmp_config_open ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
133 if (!options) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
134 visual_log (VISUAL_LOG_CRITICAL, _("Cannot get options"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
135 return;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
136 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
137
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
138 lv_bmp_config_load_prefs ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
139
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
140 if (SDL_Init (SDL_INIT_VIDEO) < 0) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
141 msg = g_strconcat (_("Cannot initialize SDL!\n"),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
142 SDL_GetError(),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
143 "\n\n", PACKAGE_NAME,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
144 _(" will not be loaded."), 0);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
145 msgwin = xmms_show_message ("libvisual-proxy", msg, _("Accept"), TRUE, dummy, NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
146 gtk_widget_show (msgwin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
147 g_free (msg);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
148 return;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
149 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
150
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
151 icon = SDL_LoadBMP (options->icon_file);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
152 if (icon)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
153 SDL_WM_SetIcon (icon, NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
154 else
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
155 visual_log (VISUAL_LOG_WARNING, _("Cannot not load icon: %s"), SDL_GetError());
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
156
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
157 pcm_mutex = SDL_CreateMutex ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
158
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
159 if (strlen (options->last_plugin) <= 0 ) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
160 visual_log (VISUAL_LOG_INFO, _("Last plugin: (none)"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
161 } else {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
162 visual_log (VISUAL_LOG_INFO, _("Last plugin: %s"), options->last_plugin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
163 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
164
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
165 cur_lv_plugin = options->last_plugin;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
166 if (!(visual_actor_valid_by_name (cur_lv_plugin))) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
167 visual_log (VISUAL_LOG_INFO, _("%s is not a valid actor plugin"), cur_lv_plugin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
168 cur_lv_plugin = lv_bmp_config_get_next_actor ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
169 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
170
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
171 SDL_WM_SetCaption (cur_lv_plugin, cur_lv_plugin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
172
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
173 if (!cur_lv_plugin) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
174 visual_log (VISUAL_LOG_CRITICAL, _("Could not get actor plugin"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
175 lv_bmp_config_close ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
176 return;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
177 } else {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
178 lv_bmp_config_set_current_actor (cur_lv_plugin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
179 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
180
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
181 visual_log (VISUAL_LOG_DEBUG, "calling SDL_CreateThread()");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
182
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
183 render_thread = SDL_CreateThread ((void *) visual_render, NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
184 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
185
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
186 static void lv_bmp_cleanup ()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
187 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
188 visual_log (VISUAL_LOG_DEBUG, "entering cleanup...");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
189 visual_running = 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
190
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
191 SDL_WaitThread (render_thread, NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
192
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
193 render_thread = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
194 visual_stopped = 1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
195
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
196 visual_log (VISUAL_LOG_DEBUG, "calling SDL_DestroyMutex()");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
197 SDL_DestroyMutex (pcm_mutex);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
198
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
199 pcm_mutex = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
200
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
201 /*
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
202 * WARNING This must be synchronized with config module.
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
203 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
204
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
205 options->last_plugin = cur_lv_plugin;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
206
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
207 visual_log (VISUAL_LOG_DEBUG, "calling lv_bmp_config_save_prefs()");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
208 lv_bmp_config_save_prefs ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
209
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
210 visual_log (VISUAL_LOG_DEBUG, "closing config file");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
211 lv_bmp_config_close ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
212
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
213 if (icon != NULL)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
214 SDL_FreeSurface (icon);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
215
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
216 visual_log (VISUAL_LOG_DEBUG, "destroying VisBin...");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
217 visual_object_unref (VISUAL_OBJECT (bin));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
218
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
219 visual_log (VISUAL_LOG_DEBUG, "calling sdl_quit()");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
220 sdl_quit ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
221
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
222 visual_log (VISUAL_LOG_DEBUG, "calling visual_quit()");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
223 visual_quit ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
224 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
225
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
226 static void lv_bmp_disable (VisPlugin* plugin)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
227 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
228
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
229 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
230
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
231 static void lv_bmp_playback_start ()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
232 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
233
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
234 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
235 static void lv_bmp_playback_stop ()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
236 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
237
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
238 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
239
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
240 static void lv_bmp_render_pcm (gint16 data[2][512])
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
241 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
242 if (visual_running == 1) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
243 SDL_mutexP (pcm_mutex);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
244 memcpy (xmmspcm, data, sizeof(gint16)*2*512);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
245 strncpy (song_name, lv_bmp_get_songname (), 1023);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
246 SDL_mutexV (pcm_mutex);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
247 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
248 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
249
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
250 static int sdl_quit ()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
251 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
252 visual_log (VISUAL_LOG_DEBUG, "Calling SDL_FreeSurface()");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
253 if (screen != NULL)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
254 SDL_FreeSurface (screen);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
255
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
256 screen = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
257
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
258 visual_log (VISUAL_LOG_DEBUG, "sdl_quit: calling SDL_Quit()");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
259 /*
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
260 * FIXME this doesn't work!
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
261 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
262 SDL_Quit ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
263
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
264 visual_log (VISUAL_LOG_DEBUG, "Leaving...");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
265 return 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
266 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
267
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
268 static void sdl_set_pal ()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
269 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
270 int i;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
271
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
272 visual_log_return_if_fail (screen != NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
273
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
274 if (pal != NULL) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
275 for (i = 0; i < 256; i ++) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
276 sdlpal[i].r = pal->colors[i].r;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
277 sdlpal[i].g = pal->colors[i].g;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
278 sdlpal[i].b = pal->colors[i].b;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
279 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
280 SDL_SetColors (screen, sdlpal, 0, 256);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
281 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
282 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
283
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
284 static void sdl_draw (SDL_Surface *screen)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
285 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
286 visual_log_return_if_fail (screen != NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
287 SDL_Flip (screen);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
288 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
289
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
290 static int sdl_create (int width, int height)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
291 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
292 const SDL_VideoInfo *videoinfo;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
293 int videoflags;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
294
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
295 if (screen != NULL)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
296 SDL_FreeSurface (screen);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
297
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
298 visual_log (VISUAL_LOG_DEBUG, "sdl_create video->bpp %d", video->bpp);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
299 visual_log (VISUAL_LOG_DEBUG, gl_plug ? "OpenGl plugin at create: yes" : "OpenGl plugin at create: no");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
300
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
301 if (gl_plug == 1) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
302 videoinfo = SDL_GetVideoInfo ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
303
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
304 if (videoinfo == 0) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
305 visual_log (VISUAL_LOG_CRITICAL, _("Could not get video info"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
306 return -1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
307 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
308
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
309 videoflags = SDL_OPENGL | SDL_GL_DOUBLEBUFFER | SDL_HWPALETTE | SDL_RESIZABLE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
310
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
311 if (videoinfo->hw_available)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
312 videoflags |= SDL_HWSURFACE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
313 else
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
314 videoflags |= SDL_SWSURFACE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
315
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
316 if (videoinfo->blit_hw)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
317 videoflags |= SDL_HWACCEL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
318
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
319 SDL_GL_SetAttribute (SDL_GL_DOUBLEBUFFER, 1);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
320
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
321 visual_log (VISUAL_LOG_DEBUG, "Setting video mode %dx%d", width, height);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
322 screen = SDL_SetVideoMode (width, height, 16, videoflags);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
323 } else {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
324 visual_log (VISUAL_LOG_DEBUG, "Setting video mode %dx%d", width, height);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
325 screen = SDL_SetVideoMode (width, height, video->bpp * 8, SDL_RESIZABLE);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
326 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
327
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
328 SDL_EnableKeyRepeat (SDL_DEFAULT_REPEAT_DELAY / 4, SDL_DEFAULT_REPEAT_INTERVAL / 4);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
329
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
330 visual_video_set_buffer (video, screen->pixels);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
331 visual_log (VISUAL_LOG_DEBUG, "pointer to the pixels: %p", screen->pixels);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
332
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
333 visual_video_set_pitch (video, screen->pitch);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
334 visual_log (VISUAL_LOG_DEBUG, "pitch: %d", video->pitch);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
335
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
336 return 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
337 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
338
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
339 static int visual_initialize (int width, int height)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
340 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
341 VisInput *input;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
342 VisVideoDepth depth;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
343 int ret;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
344
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
345 bin = visual_bin_new ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
346 visual_bin_set_supported_depth (bin, VISUAL_VIDEO_DEPTH_ALL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
347 // visual_bin_set_preferred_depth (bin, VISUAL_BIN_DEPTH_LOWEST);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
348
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
349 depth = visual_video_depth_enum_from_value (options->depth);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
350 if (depth == VISUAL_VIDEO_DEPTH_ERROR)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
351 depth = VISUAL_VIDEO_DEPTH_24BIT;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
352 options->depth = depth;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
353
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
354 video = visual_video_new ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
355
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
356 ret = visual_video_set_depth (video, depth);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
357 if (ret < 0) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
358 visual_log (VISUAL_LOG_CRITICAL, _("Cannot set video depth"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
359 return -1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
360 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
361 visual_video_set_dimension (video, width, height);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
362
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
363 ret = visual_bin_set_video (bin, video);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
364 if (ret < 0) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
365 visual_log (VISUAL_LOG_CRITICAL, _("Cannot set video"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
366 return -1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
367 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
368 /*visual_bin_connect_by_names (bin, cur_lv_plugin, NULL);*/
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
369 visual_bin_connect_by_names (bin, cur_lv_plugin, LV_XMMS_DEFAULT_INPUT_PLUGIN);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
370
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
371 if (visual_bin_get_depth (bin) == VISUAL_VIDEO_DEPTH_GL) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
372 visual_video_set_depth (video, VISUAL_VIDEO_DEPTH_GL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
373 gl_plug = 1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
374 } else {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
375 gl_plug = 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
376 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
377
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
378 visual_log (VISUAL_LOG_DEBUG, gl_plug ? "OpenGl plugin: yes" : "OpenGl plugin: no");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
379 ret = sdl_create (width, height);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
380 if (ret < 0) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
381 return -1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
382 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
383
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
384 /* Called so the flag is set to FALSE, seen we create the initial environment here */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
385 visual_bin_depth_changed (bin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
386
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
387 input = visual_bin_get_input (bin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
388 ret = visual_input_set_callback (input, visual_upload_callback, NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
389 if (ret < 0) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
390 visual_log (VISUAL_LOG_CRITICAL, _("Cannot set input plugin callback"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
391 return -1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
392 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
393
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
394 visual_bin_switch_set_style (bin, VISUAL_SWITCH_STYLE_MORPH);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
395 visual_bin_switch_set_automatic (bin, TRUE);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
396 visual_bin_switch_set_mode (bin, VISUAL_MORPH_MODE_TIME);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
397 visual_bin_switch_set_time (bin, 4, 0);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
398
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
399 visual_bin_realize (bin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
400 visual_bin_sync (bin, FALSE);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
401
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
402 return 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
403 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
404
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
405 static int visual_upload_callback (VisInput *input, VisAudio *audio, void *private_data)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
406 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
407 int i;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
408
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
409 visual_log_return_val_if_fail (audio != NULL, -1);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
410
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
411 for (i = 0; i < 512; i++) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
412 audio->plugpcm[0][i] = xmmspcm[0][i];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
413 audio->plugpcm[1][i] = xmmspcm[1][i];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
414 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
415
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
416 return 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
417 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
418
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
419 static int visual_resize (int width, int height)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
420 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
421 visual_video_set_dimension (video, width, height);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
422
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
423 sdl_create (width, height);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
424
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
425 options->width = width;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
426 options->height = height;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
427
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
428 visual_bin_sync (bin, FALSE);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
429
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
430 return 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
431 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
432
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
433 static int visual_render (void *arg)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
434 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
435 visual_running = 1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
436 visual_stopped = 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
437 static long render_time, now;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
438 long frame_length;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
439 long idle_time;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
440 long frames;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
441 int ret;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
442
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
443 ret = visual_initialize (options->width, options->height);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
444 if (ret < 0) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
445 visual_log (VISUAL_LOG_CRITICAL, _("Cannot initialize plugin's visual stuff"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
446 return -1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
447 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
448
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
449 frame_length = (1.0 / options->fps) * 1000;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
450 frames = 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
451 while (visual_running == 1) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
452 /* Update songinfo */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
453 songinfo = visual_actor_get_songinfo (visual_bin_get_actor (bin));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
454 visual_songinfo_set_type (songinfo, VISUAL_SONGINFO_TYPE_SIMPLE);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
455
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
456 visual_songinfo_set_simple_name (songinfo, song_name);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
457
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
458 /* On depth change */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
459 if (visual_bin_depth_changed (bin) == TRUE) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
460 if (SDL_MUSTLOCK (screen) == SDL_TRUE)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
461 SDL_LockSurface (screen);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
462
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
463 visual_video_set_buffer (video, screen->pixels);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
464 if (visual_bin_get_depth (bin) == VISUAL_VIDEO_DEPTH_GL)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
465 gl_plug = 1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
466 else
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
467 gl_plug = 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
468
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
469 sdl_create (options->width, options->height);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
470 visual_bin_sync (bin, TRUE);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
471
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
472 if (SDL_MUSTLOCK (screen) == SDL_TRUE)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
473 SDL_UnlockSurface (screen);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
474 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
475
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
476 render_time = SDL_GetTicks();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
477
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
478 if (gl_plug == 1) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
479 visual_bin_run (bin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
480
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
481 SDL_GL_SwapBuffers ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
482 } else {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
483 if (SDL_MUSTLOCK (screen) == SDL_TRUE)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
484 SDL_LockSurface (screen);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
485
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
486 visual_bin_run (bin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
487
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
488 if (SDL_MUSTLOCK (screen) == SDL_TRUE)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
489 SDL_UnlockSurface (screen);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
490
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
491 pal = visual_bin_get_palette (bin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
492 sdl_set_pal ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
493
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
494 sdl_draw (screen);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
495 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
496
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
497 now = SDL_GetTicks();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
498 idle_time = now - render_time;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
499
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
500 if (idle_time < frame_length)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
501 usleep(idle_time * 900);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
502
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
503 sdl_event_handle ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
504
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
505 if (options->fullscreen && !(screen->flags & SDL_FULLSCREEN))
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
506 SDL_WM_ToggleFullScreen (screen);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
507 frames++;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
508 /*
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
509 * Sometime we actualize the frame_length, because we let user
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
510 * choose maximum FPS dinamically.
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
511 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
512 if (frames > options->fps) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
513 frames = 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
514 frame_length = (1.0 / options->fps) * 1000;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
515 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
516 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
517
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
518 visual_stopped = 1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
519 return 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
520 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
521
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
522 static int sdl_event_handle ()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
523 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
524 SDL_Event event;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
525 VisEventQueue *vevent;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
526 const char *next_plugin;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
527
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
528 while (SDL_PollEvent (&event)) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
529 vevent = visual_plugin_get_eventqueue (visual_actor_get_plugin (visual_bin_get_actor (bin)));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
530
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
531 switch (event.type) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
532 case SDL_KEYUP:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
533 visual_event_queue_add_keyboard (vevent, event.key.keysym.sym, event.key.keysym.mod, VISUAL_KEY_UP);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
534 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
535
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
536 case SDL_KEYDOWN:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
537 visual_event_queue_add_keyboard (vevent, event.key.keysym.sym, event.key.keysym.mod, VISUAL_KEY_DOWN);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
538
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
539 switch (event.key.keysym.sym) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
540 /* XMMS CONTROLS */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
541 case SDLK_UP:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
542 xmms_remote_set_main_volume (lv_bmp_vp.xmms_session,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
543 xmms_remote_get_main_volume (lv_bmp_vp.xmms_session) + 1);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
544 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
545 case SDLK_DOWN:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
546 xmms_remote_set_main_volume (lv_bmp_vp.xmms_session,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
547 xmms_remote_get_main_volume (lv_bmp_vp.xmms_session) - 1);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
548 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
549 case SDLK_LEFT:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
550 if (xmms_remote_is_playing (lv_bmp_vp.xmms_session))
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
551 xmms_remote_jump_to_time (lv_bmp_vp.xmms_session,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
552 xmms_remote_get_output_time (lv_bmp_vp.xmms_session) - 5000);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
553 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
554 case SDLK_RIGHT:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
555 if (xmms_remote_is_playing (lv_bmp_vp.xmms_session))
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
556 xmms_remote_jump_to_time (lv_bmp_vp.xmms_session,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
557 xmms_remote_get_output_time (lv_bmp_vp.xmms_session) + 5000);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
558 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
559 case SDLK_z:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
560 xmms_remote_playlist_prev (lv_bmp_vp.xmms_session);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
561 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
562
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
563 case SDLK_x:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
564 xmms_remote_play (lv_bmp_vp.xmms_session);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
565 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
566
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
567 case SDLK_c:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
568 xmms_remote_pause (lv_bmp_vp.xmms_session);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
569 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
570
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
571 case SDLK_v:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
572 xmms_remote_stop (lv_bmp_vp.xmms_session);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
573 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
574
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
575 case SDLK_b:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
576 xmms_remote_playlist_next (lv_bmp_vp.xmms_session);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
577 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
578
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
579 /* PLUGIN CONTROLS */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
580 case SDLK_F11:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
581 case SDLK_TAB:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
582 SDL_WM_ToggleFullScreen (screen);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
583 lv_bmp_config_toggle_fullscreen();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
584
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
585 if ((screen->flags & SDL_FULLSCREEN) > 0)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
586 SDL_ShowCursor (SDL_DISABLE);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
587 else
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
588 SDL_ShowCursor (SDL_ENABLE);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
589
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
590 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
591
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
592 case SDLK_a:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
593 next_plugin = lv_bmp_config_get_prev_actor ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
594
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
595 if (SDL_MUSTLOCK (screen) == SDL_TRUE)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
596 SDL_LockSurface (screen);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
597
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
598 if (next_plugin != NULL && (strcmp (next_plugin, cur_lv_plugin) != 0)) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
599 lv_bmp_config_set_current_actor (next_plugin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
600 cur_lv_plugin = next_plugin;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
601 visual_bin_set_morph_by_name (bin, lv_bmp_config_morph_plugin());
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
602 visual_bin_switch_actor_by_name (bin, cur_lv_plugin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
603 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
604
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
605 SDL_WM_SetCaption (cur_lv_plugin, cur_lv_plugin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
606
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
607 if (SDL_MUSTLOCK (screen) == SDL_TRUE)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
608 SDL_UnlockSurface (screen);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
609
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
610 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
611
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
612 case SDLK_s:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
613 next_plugin = lv_bmp_config_get_next_actor ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
614
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
615 if (SDL_MUSTLOCK (screen) == SDL_TRUE)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
616 SDL_LockSurface (screen);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
617
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
618 if (next_plugin != NULL && (strcmp (next_plugin, cur_lv_plugin) != 0)) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
619 lv_bmp_config_set_current_actor (next_plugin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
620 cur_lv_plugin = next_plugin;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
621 visual_bin_set_morph_by_name (bin, lv_bmp_config_morph_plugin());
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
622 visual_bin_switch_actor_by_name (bin, cur_lv_plugin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
623 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
624
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
625 SDL_WM_SetCaption (cur_lv_plugin, cur_lv_plugin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
626
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
627 if (SDL_MUSTLOCK (screen) == SDL_TRUE)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
628 SDL_UnlockSurface (screen);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
629
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
630 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
631
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
632 default: /* to avoid warnings */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
633 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
634 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
635 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
636
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
637 case SDL_VIDEORESIZE:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
638 visual_resize (event.resize.w, event.resize.h);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
639 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
640
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
641 case SDL_MOUSEMOTION:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
642 visual_event_queue_add_mousemotion (vevent, event.motion.x, event.motion.y);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
643 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
644
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
645 case SDL_MOUSEBUTTONDOWN:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
646 visual_event_queue_add_mousebutton (vevent, event.button.button, VISUAL_MOUSE_DOWN,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
647 event.button.x, event.button.y);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
648 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
649
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
650 case SDL_MOUSEBUTTONUP:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
651 visual_event_queue_add_mousebutton (vevent, event.button.button, VISUAL_MOUSE_UP,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
652 event.button.x, event.button.y);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
653 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
654
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
655 case SDL_QUIT:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
656 GDK_THREADS_ENTER ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
657 gtk_idle_add (disable_func, NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
658 GDK_THREADS_LEAVE ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
659 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
660
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
661 default: /* to avoid warnings */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
662 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
663 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
664 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
665
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
666 return 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
667 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
668
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
669 static gint disable_func (gpointer data)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
670 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
671 lv_bmp_vp.disable_plugin (&lv_bmp_vp);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
672
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
673 return FALSE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
674 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
675
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
676
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
677 static void dummy (GtkWidget *widget, gpointer data)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
678 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
679 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
680