00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __GUI_H__
00023 #define __GUI_H__
00024
00025 #include <pthread.h>
00026 #include <generic.h>
00027
00028 class Stream_mixer;
00029
00030 class GUI {
00031 public:
00032 GUI(int argc, char **argv, Stream_mixer *mix);
00033
00034 virtual ~GUI();
00035
00036
00037 virtual void run() =0;
00038 void start() { pthread_create(&_thread, NULL, &kickoff, this); };
00039
00040 void lock() { pthread_mutex_lock(&_mutex); };
00041 void unlock() { pthread_mutex_unlock(&_mutex); };
00042 void wait() { pthread_cond_wait(&_cond,&_mutex); };
00043 void signal() { pthread_cond_signal(&_cond); };
00044
00045
00046
00047 virtual void set_lcd(unsigned int chan, char *lcd) =0;
00048 virtual void set_pos(unsigned int chan, float pos) =0;
00049
00050 virtual void set_title(char *txt) =0;
00051 virtual void set_status(char *txt) =0;
00052 virtual void add_playlist(unsigned int ch, char *txt) =0;
00053 virtual void sel_playlist(unsigned int ch, int row) =0;
00054
00055 virtual void bpsmeter_set(int n) =0;
00056 virtual void vumeter_set(int n) =0;
00057
00058 virtual bool meter_shown() =0;
00059
00060 virtual void lameversion(char *str) { };
00061
00062 bool quit;
00063 Stream_mixer *_mix;
00064
00065 float ch_pos[MAX_CHANNELS];
00066 char ch_lcd[MAX_CHANNELS][10];
00067
00068 private:
00069 pthread_t _thread;
00070 pthread_mutex_t _mutex;
00071 pthread_cond_t _cond;
00072
00073 protected:
00074 static void* kickoff(void *arg) { ((GUI *) arg)->run(); return NULL; };
00075
00076 };
00077
00078 #endif