/*
- * Copyright (C) 2003-2006 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2003-2007 Andre Noll <maan@systemlinux.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
static int height = 0;
extern const char *status_item_list[NUM_STAT_ITEMS];
-struct gengetopt_args_info args_info;
+struct sdl_gui_args_info args_info;
#define FRAME_WIDTH 10
#define FONT_HEIGHT 36
SDL_EventState(SDL_MOUSEBUTTONUP, SDL_IGNORE);
/* Set the window manager title bar */
SDL_WM_SetCaption("The Gui of death that makes you blind (paraslash "
- VERSION ")", "SFont");
+ PACKAGE_VERSION ")", "SFont");
}
/*
*/
static int command_handler(void)
{
- FILE *pipe;
+ FILE *f;
unsigned count = 0;
char text[MAXLINE]="";
char buf[MAXLINE]="";
if (text[0] == '!') {
if (text[1] == '\0')
return 1;
- pipe = popen(text + 1, "r");
+ f = popen(text + 1, "r");
} else {
sprintf(buf, BINDIR "/para_client %s 2>&1", text);
- pipe = popen(buf, "r");
+ f = popen(buf, "r");
}
- if (!pipe)
+ if (!f)
return 0;
fill_output_rect();
- while(fgets(text, MAXLINE - 1, pipe)) {
+ while(fgets(text, MAXLINE - 1, f)) {
int len;
tab2space(text);
update_all();
hit_key("Hit any key to return");
out: fill_output_rect();
- pclose(pipe);
+ pclose(f);
return 1;
}
SDL_RWops *rwop;
int fds[3] = {0, 1, 0};
pid_t pid;
- FILE *pipe;
+ FILE *f;
if (para_exec_cmdline_pid(&pid, args_info.pic_cmd_arg, fds) < 0)
return NULL;
- pipe = fdopen(fds[1], "r");
- if (!pipe)
+ f = fdopen(fds[1], "r");
+ if (!f)
return NULL;
- if (!(rwop = SDL_RWFromFP(pipe, 0)))
+ if (!(rwop = SDL_RWFromFP(f, 0)))
return NULL;
return IMG_LoadJPG_RW(rwop);
}
* Read stat line from pipe if pipe is ready, call update_status to
* display information.
*/
-static int draw_status(int pipe)
+static int draw_status(int fd)
{
fd_set rfds;
int ret;
tv.tv_sec = 0;
tv.tv_usec = 3000000;
FD_ZERO(&rfds);
- FD_SET(pipe, &rfds);
- ret = para_select(pipe + 1, &rfds, NULL, &tv);
+ FD_SET(fd, &rfds);
+ ret = para_select(fd + 1, &rfds, NULL, &tv);
if (ret <= 0)
return 0;
- if (read_audiod_pipe(pipe, update_status) > 0)
+ if (read_audiod_pipe(fd, update_status) > 0)
return 1;
free(stat_items[SI_STATUS_BAR].content);
stat_items[SI_STATUS_BAR].content =
*/
int main(int argc, char *argv[])
{
- int i, ret, pipe;
+ int i, ret, fd = -1;
SDLKey sym;
- cmdline_parser(argc, argv, &args_info);
+ sdl_gui_cmdline_parser(argc, argv, &args_info);
+ HANDLE_VERSION_FLAG("sdl_gui", args_info);
ret = configfile_exists();
// printf("w=%i,h=%i,ret=%i, cf=%s\n", width, height, ret, args_info.config_file_arg);
exit(EXIT_FAILURE);
}
if (ret)
- cmdline_parser_configfile(args_info.config_file_arg,
+ sdl_gui_cmdline_parser_configfile(args_info.config_file_arg,
&args_info, 0, 0, 0);
signal(SIGCHLD, SIG_IGN);
width = args_info.width_arg;
height = args_info.height_arg;
// printf("w=%i,h=%i,ret=%i, cf=%s\n", width, height, ret, args_info.config_file_arg);
init_stat_items();
- pipe = para_open_audiod_pipe(args_info.stat_cmd_arg);
init_SDL();
for (i = 0; fonts[i].name[0]; i++) {
char buf[MAXLINE];
update_input();
}
for (;;) {
- ret = draw_status(pipe);
+ if (fd < 0) {
+ fd = para_open_audiod_pipe(args_info.stat_cmd_arg);
+ if (fd < 0)
+ clean_exit(EXIT_FAILURE);
+ }
+ ret = draw_status(fd);
if (ret < 0) {
- close(pipe);
- pipe = -1;
+ close(fd);
+ fd = -1;
}
if (SDL_QuitRequested())
clean_exit(0);
|| sym == SDLK_COMPOSE
)
continue;
- if (pipe < 0) {
-// printf("closing pipe\n");
- kill(0, SIGINT);
- close(pipe);
-// printf("pipe closed\n");
- }
fill_input_rect();
update_input();
if (!command_handler())
print_help();
update_pic();
SDL_UpdateRect(screen, 0, 0, 0, 0);
- pipe = para_open_audiod_pipe(args_info.stat_cmd_arg);
break;
}
}