annotate Plugins/Visualization/libvisual-proxy/main.c @ 395:0923a41170bb trunk

[svn] Add S3M support back after receiving a convincing testcase.
author chainsaw
date Sat, 07 Jan 2006 06:18:13 -0800
parents 244cc47a7ae3
children
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>
314
31725d73a697 [svn] Squash the implicit declaration warnings by including the correct util.h
chainsaw
parents: 257
diff changeset
7 #include <libaudacious/util.h>
61
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
318
43e7cbbf77e1 [svn] Convert to confdb usage. Squash most qualifier-related warnings. Remove pixmap/icon functionality. Eliminate dead code.
chainsaw
parents: 317
diff changeset
23 #define LV_XMMS_DEFAULT_INPUT_PLUGIN "alsa"
43e7cbbf77e1 [svn] Convert to confdb usage. Squash most qualifier-related warnings. Remove pixmap/icon functionality. Eliminate dead code.
chainsaw
parents: 317
diff changeset
24 #undef LV_XMMS_ENABLE_DEBUG
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
25
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
26 /* SDL variables */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
27 static SDL_Surface *screen = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
28 static SDL_Color sdlpal[256];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
29 static SDL_Thread *render_thread;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
30 static SDL_mutex *pcm_mutex;
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];
318
43e7cbbf77e1 [svn] Convert to confdb usage. Squash most qualifier-related warnings. Remove pixmap/icon functionality. Eliminate dead code.
chainsaw
parents: 317
diff changeset
37 static char *cur_lv_plugin = NULL;
61
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 */
317
45a0d9a765be [svn] Begin resurrecting config dialog. It compiles. Basic functionality is available, but see debug spew for TODO list.
chainsaw
parents: 314
diff changeset
85 lv_bmp_cleanup, /* cleanup */
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
86 NULL, /* about */
321
bd81a73eadff [svn] Okay, braindead configuration handling. Disabling config button for now.
chainsaw
parents: 318
diff changeset
87 NULL, /* configure */
317
45a0d9a765be [svn] Begin resurrecting config dialog. It compiles. Basic functionality is available, but see debug spew for TODO list.
chainsaw
parents: 314
diff changeset
88 lv_bmp_disable, /* disable plugin */
61
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 gchar *msg;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
111 GtkWidget *msgwin;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
112
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
113 if (!visual_is_initialized ()) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
114 argv = g_malloc (sizeof(char*));
257
256b3acc87d4 [svn] Properly report Audacious instead of XMMS or BMP in all places. Patch by laci; closes bug #379.
chainsaw
parents: 61
diff changeset
115 argv[0] = g_strdup (_("Audacious plugin"));
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
116 argc = 1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
117
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
118 visual_init (&argc, &argv);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
119
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
120 g_free (argv[0]);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
121 g_free (argv);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
122 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
123
318
43e7cbbf77e1 [svn] Convert to confdb usage. Squash most qualifier-related warnings. Remove pixmap/icon functionality. Eliminate dead code.
chainsaw
parents: 317
diff changeset
124 #ifdef LV_XMMS_ENABLE_DEBUG
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
125 visual_log_set_verboseness (VISUAL_LOG_VERBOSENESS_HIGH);
318
43e7cbbf77e1 [svn] Convert to confdb usage. Squash most qualifier-related warnings. Remove pixmap/icon functionality. Eliminate dead code.
chainsaw
parents: 317
diff changeset
126 #else
43e7cbbf77e1 [svn] Convert to confdb usage. Squash most qualifier-related warnings. Remove pixmap/icon functionality. Eliminate dead code.
chainsaw
parents: 317
diff changeset
127 visual_log_set_verboseness (VISUAL_LOG_VERBOSENESS_NONE);
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
128 #endif
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
129
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
130 options = lv_bmp_config_open ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
131 if (!options) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
132 visual_log (VISUAL_LOG_CRITICAL, _("Cannot get options"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
133 return;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
134 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
135
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
136 lv_bmp_config_load_prefs ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
137
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
138 if (SDL_Init (SDL_INIT_VIDEO) < 0) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
139 msg = g_strconcat (_("Cannot initialize SDL!\n"),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
140 SDL_GetError(),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
141 "\n\n", PACKAGE_NAME,
375
244cc47a7ae3 [svn] We have no choice but to continue as planned. Deploy the sentinels!
chainsaw
parents: 321
diff changeset
142 _(" will not be loaded."), NULL);
314
31725d73a697 [svn] Squash the implicit declaration warnings by including the correct util.h
chainsaw
parents: 257
diff changeset
143 msgwin = xmms_show_message ("libvisual-proxy", msg, _("Accept"), TRUE, GTK_SIGNAL_FUNC(dummy), NULL);
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
144 gtk_widget_show (msgwin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
145 g_free (msg);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
146 return;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
147 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
148
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
149 pcm_mutex = SDL_CreateMutex ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
150
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
151 if (strlen (options->last_plugin) <= 0 ) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
152 visual_log (VISUAL_LOG_INFO, _("Last plugin: (none)"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
153 } else {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
154 visual_log (VISUAL_LOG_INFO, _("Last plugin: %s"), options->last_plugin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
155 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
156
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
157 cur_lv_plugin = options->last_plugin;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
158 if (!(visual_actor_valid_by_name (cur_lv_plugin))) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
159 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
160 cur_lv_plugin = lv_bmp_config_get_next_actor ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
161 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
162
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
163 SDL_WM_SetCaption (cur_lv_plugin, cur_lv_plugin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
164
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
165 if (!cur_lv_plugin) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
166 visual_log (VISUAL_LOG_CRITICAL, _("Could not get actor plugin"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
167 lv_bmp_config_close ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
168 return;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
169 } else {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
170 lv_bmp_config_set_current_actor (cur_lv_plugin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
171 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
172
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
173 visual_log (VISUAL_LOG_DEBUG, "calling SDL_CreateThread()");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
174
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
175 render_thread = SDL_CreateThread ((void *) visual_render, NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
176 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
177
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
178 static void lv_bmp_cleanup ()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
179 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
180 visual_log (VISUAL_LOG_DEBUG, "entering cleanup...");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
181 visual_running = 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
182
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
183 SDL_WaitThread (render_thread, NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
184
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
185 render_thread = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
186 visual_stopped = 1;
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, "calling SDL_DestroyMutex()");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
189 SDL_DestroyMutex (pcm_mutex);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
190
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
191 pcm_mutex = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
192
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
193 /*
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
194 * WARNING This must be synchronized with config module.
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
195 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
196
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
197 options->last_plugin = cur_lv_plugin;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
198
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
199 visual_log (VISUAL_LOG_DEBUG, "calling lv_bmp_config_save_prefs()");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
200 lv_bmp_config_save_prefs ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
201
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
202 visual_log (VISUAL_LOG_DEBUG, "closing config file");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
203 lv_bmp_config_close ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
204
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
205 visual_log (VISUAL_LOG_DEBUG, "destroying VisBin...");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
206 visual_object_unref (VISUAL_OBJECT (bin));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
207
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
208 visual_log (VISUAL_LOG_DEBUG, "calling sdl_quit()");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
209 sdl_quit ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
210
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
211 visual_log (VISUAL_LOG_DEBUG, "calling visual_quit()");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
212 visual_quit ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
213 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
214
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
215 static void lv_bmp_disable (VisPlugin* plugin)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
216 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
217
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
218 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
219
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
220 static void lv_bmp_playback_start ()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
221 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
222
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
223 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
224 static void lv_bmp_playback_stop ()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
225 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
226
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 static void lv_bmp_render_pcm (gint16 data[2][512])
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
230 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
231 if (visual_running == 1) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
232 SDL_mutexP (pcm_mutex);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
233 memcpy (xmmspcm, data, sizeof(gint16)*2*512);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
234 strncpy (song_name, lv_bmp_get_songname (), 1023);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
235 SDL_mutexV (pcm_mutex);
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 static int sdl_quit ()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
240 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
241 visual_log (VISUAL_LOG_DEBUG, "Calling SDL_FreeSurface()");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
242 if (screen != NULL)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
243 SDL_FreeSurface (screen);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
244
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
245 screen = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
246
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
247 visual_log (VISUAL_LOG_DEBUG, "sdl_quit: calling SDL_Quit()");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
248 /*
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
249 * FIXME this doesn't work!
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
250 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
251 SDL_Quit ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
252
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
253 visual_log (VISUAL_LOG_DEBUG, "Leaving...");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
254 return 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
255 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
256
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
257 static void sdl_set_pal ()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
258 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
259 int i;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
260
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
261 visual_log_return_if_fail (screen != NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
262
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
263 if (pal != NULL) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
264 for (i = 0; i < 256; i ++) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
265 sdlpal[i].r = pal->colors[i].r;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
266 sdlpal[i].g = pal->colors[i].g;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
267 sdlpal[i].b = pal->colors[i].b;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
268 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
269 SDL_SetColors (screen, sdlpal, 0, 256);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
270 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
271 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
272
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
273 static void sdl_draw (SDL_Surface *screen)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
274 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
275 visual_log_return_if_fail (screen != NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
276 SDL_Flip (screen);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
277 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
278
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
279 static int sdl_create (int width, int height)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
280 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
281 const SDL_VideoInfo *videoinfo;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
282 int videoflags;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
283
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
284 if (screen != NULL)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
285 SDL_FreeSurface (screen);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
286
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
287 visual_log (VISUAL_LOG_DEBUG, "sdl_create video->bpp %d", video->bpp);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
288 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
289
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
290 if (gl_plug == 1) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
291 videoinfo = SDL_GetVideoInfo ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
292
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
293 if (videoinfo == 0) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
294 visual_log (VISUAL_LOG_CRITICAL, _("Could not get video info"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
295 return -1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
296 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
297
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
298 videoflags = SDL_OPENGL | SDL_GL_DOUBLEBUFFER | SDL_HWPALETTE | SDL_RESIZABLE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
299
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
300 if (videoinfo->hw_available)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
301 videoflags |= SDL_HWSURFACE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
302 else
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
303 videoflags |= SDL_SWSURFACE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
304
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
305 if (videoinfo->blit_hw)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
306 videoflags |= SDL_HWACCEL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
307
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
308 SDL_GL_SetAttribute (SDL_GL_DOUBLEBUFFER, 1);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
309
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
310 visual_log (VISUAL_LOG_DEBUG, "Setting video mode %dx%d", width, height);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
311 screen = SDL_SetVideoMode (width, height, 16, videoflags);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
312 } else {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
313 visual_log (VISUAL_LOG_DEBUG, "Setting video mode %dx%d", width, height);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
314 screen = SDL_SetVideoMode (width, height, video->bpp * 8, SDL_RESIZABLE);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
315 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
316
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
317 SDL_EnableKeyRepeat (SDL_DEFAULT_REPEAT_DELAY / 4, SDL_DEFAULT_REPEAT_INTERVAL / 4);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
318
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
319 visual_video_set_buffer (video, screen->pixels);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
320 visual_log (VISUAL_LOG_DEBUG, "pointer to the pixels: %p", screen->pixels);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
321
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
322 visual_video_set_pitch (video, screen->pitch);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
323 visual_log (VISUAL_LOG_DEBUG, "pitch: %d", video->pitch);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
324
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
325 return 0;
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 static int visual_initialize (int width, int height)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
329 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
330 VisInput *input;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
331 VisVideoDepth depth;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
332 int ret;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
333
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
334 bin = visual_bin_new ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
335 visual_bin_set_supported_depth (bin, VISUAL_VIDEO_DEPTH_ALL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
336 // visual_bin_set_preferred_depth (bin, VISUAL_BIN_DEPTH_LOWEST);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
337
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
338 depth = visual_video_depth_enum_from_value (options->depth);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
339 if (depth == VISUAL_VIDEO_DEPTH_ERROR)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
340 depth = VISUAL_VIDEO_DEPTH_24BIT;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
341 options->depth = depth;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
342
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
343 video = visual_video_new ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
344
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
345 ret = visual_video_set_depth (video, depth);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
346 if (ret < 0) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
347 visual_log (VISUAL_LOG_CRITICAL, _("Cannot set video depth"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
348 return -1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
349 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
350 visual_video_set_dimension (video, width, height);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
351
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
352 ret = visual_bin_set_video (bin, video);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
353 if (ret < 0) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
354 visual_log (VISUAL_LOG_CRITICAL, _("Cannot set video"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
355 return -1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
356 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
357 /*visual_bin_connect_by_names (bin, cur_lv_plugin, NULL);*/
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
358 visual_bin_connect_by_names (bin, cur_lv_plugin, LV_XMMS_DEFAULT_INPUT_PLUGIN);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
359
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
360 if (visual_bin_get_depth (bin) == VISUAL_VIDEO_DEPTH_GL) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
361 visual_video_set_depth (video, VISUAL_VIDEO_DEPTH_GL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
362 gl_plug = 1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
363 } else {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
364 gl_plug = 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
365 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
366
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
367 visual_log (VISUAL_LOG_DEBUG, gl_plug ? "OpenGl plugin: yes" : "OpenGl plugin: no");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
368 ret = sdl_create (width, height);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
369 if (ret < 0) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
370 return -1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
371 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
372
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
373 /* 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
374 visual_bin_depth_changed (bin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
375
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
376 input = visual_bin_get_input (bin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
377 ret = visual_input_set_callback (input, visual_upload_callback, NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
378 if (ret < 0) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
379 visual_log (VISUAL_LOG_CRITICAL, _("Cannot set input plugin callback"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
380 return -1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
381 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
382
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
383 visual_bin_switch_set_style (bin, VISUAL_SWITCH_STYLE_MORPH);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
384 visual_bin_switch_set_automatic (bin, TRUE);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
385 visual_bin_switch_set_mode (bin, VISUAL_MORPH_MODE_TIME);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
386 visual_bin_switch_set_time (bin, 4, 0);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
387
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
388 visual_bin_realize (bin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
389 visual_bin_sync (bin, FALSE);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
390
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
391 return 0;
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 static int visual_upload_callback (VisInput *input, VisAudio *audio, void *private_data)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
395 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
396 int i;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
397
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
398 visual_log_return_val_if_fail (audio != NULL, -1);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
399
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
400 for (i = 0; i < 512; i++) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
401 audio->plugpcm[0][i] = xmmspcm[0][i];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
402 audio->plugpcm[1][i] = xmmspcm[1][i];
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 return 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
406 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
407
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
408 static int visual_resize (int width, int height)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
409 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
410 visual_video_set_dimension (video, width, height);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
411
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
412 sdl_create (width, height);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
413
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
414 options->width = width;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
415 options->height = height;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
416
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
417 visual_bin_sync (bin, FALSE);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
418
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
419 return 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
420 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
421
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
422 static int visual_render (void *arg)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
423 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
424 visual_running = 1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
425 visual_stopped = 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
426 static long render_time, now;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
427 long frame_length;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
428 long idle_time;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
429 long frames;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
430 int ret;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
431
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
432 ret = visual_initialize (options->width, options->height);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
433 if (ret < 0) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
434 visual_log (VISUAL_LOG_CRITICAL, _("Cannot initialize plugin's visual stuff"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
435 return -1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
436 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
437
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
438 frame_length = (1.0 / options->fps) * 1000;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
439 frames = 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
440 while (visual_running == 1) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
441 /* Update songinfo */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
442 songinfo = visual_actor_get_songinfo (visual_bin_get_actor (bin));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
443 visual_songinfo_set_type (songinfo, VISUAL_SONGINFO_TYPE_SIMPLE);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
444
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
445 visual_songinfo_set_simple_name (songinfo, song_name);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
446
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
447 /* On depth change */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
448 if (visual_bin_depth_changed (bin) == TRUE) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
449 if (SDL_MUSTLOCK (screen) == SDL_TRUE)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
450 SDL_LockSurface (screen);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
451
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
452 visual_video_set_buffer (video, screen->pixels);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
453 if (visual_bin_get_depth (bin) == VISUAL_VIDEO_DEPTH_GL)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
454 gl_plug = 1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
455 else
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
456 gl_plug = 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
457
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
458 sdl_create (options->width, options->height);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
459 visual_bin_sync (bin, TRUE);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
460
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
461 if (SDL_MUSTLOCK (screen) == SDL_TRUE)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
462 SDL_UnlockSurface (screen);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
463 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
464
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
465 render_time = SDL_GetTicks();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
466
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
467 if (gl_plug == 1) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
468 visual_bin_run (bin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
469
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
470 SDL_GL_SwapBuffers ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
471 } else {
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_LockSurface (screen);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
474
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
475 visual_bin_run (bin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
476
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
477 if (SDL_MUSTLOCK (screen) == SDL_TRUE)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
478 SDL_UnlockSurface (screen);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
479
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
480 pal = visual_bin_get_palette (bin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
481 sdl_set_pal ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
482
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
483 sdl_draw (screen);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
484 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
485
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
486 now = SDL_GetTicks();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
487 idle_time = now - render_time;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
488
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
489 if (idle_time < frame_length)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
490 usleep(idle_time * 900);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
491
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
492 sdl_event_handle ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
493
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
494 if (options->fullscreen && !(screen->flags & SDL_FULLSCREEN))
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
495 SDL_WM_ToggleFullScreen (screen);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
496 frames++;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
497 /*
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
498 * Sometime we actualize the frame_length, because we let user
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
499 * choose maximum FPS dinamically.
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
500 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
501 if (frames > options->fps) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
502 frames = 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
503 frame_length = (1.0 / options->fps) * 1000;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
504 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
505 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
506
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
507 visual_stopped = 1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
508 return 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
509 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
510
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
511 static int sdl_event_handle ()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
512 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
513 SDL_Event event;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
514 VisEventQueue *vevent;
318
43e7cbbf77e1 [svn] Convert to confdb usage. Squash most qualifier-related warnings. Remove pixmap/icon functionality. Eliminate dead code.
chainsaw
parents: 317
diff changeset
515 char *next_plugin;
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
516
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
517 while (SDL_PollEvent (&event)) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
518 vevent = visual_plugin_get_eventqueue (visual_actor_get_plugin (visual_bin_get_actor (bin)));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
519
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
520 switch (event.type) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
521 case SDL_KEYUP:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
522 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
523 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
524
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
525 case SDL_KEYDOWN:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
526 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
527
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
528 switch (event.key.keysym.sym) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
529 /* XMMS CONTROLS */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
530 case SDLK_UP:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
531 xmms_remote_set_main_volume (lv_bmp_vp.xmms_session,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
532 xmms_remote_get_main_volume (lv_bmp_vp.xmms_session) + 1);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
533 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
534 case SDLK_DOWN:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
535 xmms_remote_set_main_volume (lv_bmp_vp.xmms_session,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
536 xmms_remote_get_main_volume (lv_bmp_vp.xmms_session) - 1);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
537 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
538 case SDLK_LEFT:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
539 if (xmms_remote_is_playing (lv_bmp_vp.xmms_session))
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
540 xmms_remote_jump_to_time (lv_bmp_vp.xmms_session,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
541 xmms_remote_get_output_time (lv_bmp_vp.xmms_session) - 5000);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
542 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
543 case SDLK_RIGHT:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
544 if (xmms_remote_is_playing (lv_bmp_vp.xmms_session))
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
545 xmms_remote_jump_to_time (lv_bmp_vp.xmms_session,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
546 xmms_remote_get_output_time (lv_bmp_vp.xmms_session) + 5000);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
547 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
548 case SDLK_z:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
549 xmms_remote_playlist_prev (lv_bmp_vp.xmms_session);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
550 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
551
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
552 case SDLK_x:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
553 xmms_remote_play (lv_bmp_vp.xmms_session);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
554 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
555
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
556 case SDLK_c:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
557 xmms_remote_pause (lv_bmp_vp.xmms_session);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
558 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
559
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
560 case SDLK_v:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
561 xmms_remote_stop (lv_bmp_vp.xmms_session);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
562 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
563
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
564 case SDLK_b:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
565 xmms_remote_playlist_next (lv_bmp_vp.xmms_session);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
566 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
567
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
568 /* PLUGIN CONTROLS */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
569 case SDLK_F11:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
570 case SDLK_TAB:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
571 SDL_WM_ToggleFullScreen (screen);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
572 lv_bmp_config_toggle_fullscreen();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
573
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
574 if ((screen->flags & SDL_FULLSCREEN) > 0)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
575 SDL_ShowCursor (SDL_DISABLE);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
576 else
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
577 SDL_ShowCursor (SDL_ENABLE);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
578
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
579 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
580
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
581 case SDLK_a:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
582 next_plugin = lv_bmp_config_get_prev_actor ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
583
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
584 if (SDL_MUSTLOCK (screen) == SDL_TRUE)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
585 SDL_LockSurface (screen);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
586
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
587 if (next_plugin != NULL && (strcmp (next_plugin, cur_lv_plugin) != 0)) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
588 lv_bmp_config_set_current_actor (next_plugin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
589 cur_lv_plugin = next_plugin;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
590 visual_bin_set_morph_by_name (bin, lv_bmp_config_morph_plugin());
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
591 visual_bin_switch_actor_by_name (bin, cur_lv_plugin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
592 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
593
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
594 SDL_WM_SetCaption (cur_lv_plugin, cur_lv_plugin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
595
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
596 if (SDL_MUSTLOCK (screen) == SDL_TRUE)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
597 SDL_UnlockSurface (screen);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
598
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
599 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
600
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
601 case SDLK_s:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
602 next_plugin = lv_bmp_config_get_next_actor ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
603
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
604 if (SDL_MUSTLOCK (screen) == SDL_TRUE)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
605 SDL_LockSurface (screen);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
606
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
607 if (next_plugin != NULL && (strcmp (next_plugin, cur_lv_plugin) != 0)) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
608 lv_bmp_config_set_current_actor (next_plugin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
609 cur_lv_plugin = next_plugin;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
610 visual_bin_set_morph_by_name (bin, lv_bmp_config_morph_plugin());
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
611 visual_bin_switch_actor_by_name (bin, cur_lv_plugin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
612 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
613
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
614 SDL_WM_SetCaption (cur_lv_plugin, cur_lv_plugin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
615
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
616 if (SDL_MUSTLOCK (screen) == SDL_TRUE)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
617 SDL_UnlockSurface (screen);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
618
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
619 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
620
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
621 default: /* to avoid warnings */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
622 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
623 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
624 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
625
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
626 case SDL_VIDEORESIZE:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
627 visual_resize (event.resize.w, event.resize.h);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
628 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
629
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
630 case SDL_MOUSEMOTION:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
631 visual_event_queue_add_mousemotion (vevent, event.motion.x, event.motion.y);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
632 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
633
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
634 case SDL_MOUSEBUTTONDOWN:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
635 visual_event_queue_add_mousebutton (vevent, event.button.button, VISUAL_MOUSE_DOWN,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
636 event.button.x, event.button.y);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
637 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
638
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
639 case SDL_MOUSEBUTTONUP:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
640 visual_event_queue_add_mousebutton (vevent, event.button.button, VISUAL_MOUSE_UP,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
641 event.button.x, event.button.y);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
642 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
643
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
644 case SDL_QUIT:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
645 GDK_THREADS_ENTER ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
646 gtk_idle_add (disable_func, NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
647 GDK_THREADS_LEAVE ();
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 default: /* to avoid warnings */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
651 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
652 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
653 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
654
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
655 return 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
656 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
657
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
658 static gint disable_func (gpointer data)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
659 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
660 lv_bmp_vp.disable_plugin (&lv_bmp_vp);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
661
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
662 return FALSE;
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 static void dummy (GtkWidget *widget, gpointer data)
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