annotate Plugins/Visualization/libvisual-proxy/main.c @ 316:950f104f2e11 trunk

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