1 #include <X11/Xlib.h>
2 #include <X11/Xmd.h>
3 #ifdef HAVE_LIBXXF86DGA
4 # include <X11/extensions/Xxf86dga.h>
5 # include <X11/extensions/xf86dgaproto.h>
6 #endif
7 #ifdef HAVE_LIBXXF86VM
8 # include <X11/extensions/xf86vmode.h>
9 # include <X11/extensions/xf86vmproto.h>
10 #endif
11 #ifdef HAVE_LIBXINERAMA
12 # include <X11/extensions/Xinerama.h>
13 #endif
14 #ifdef HAVE_LIBXV
15 # include <X11/extensions/Xv.h>
16 # include <X11/extensions/Xvlib.h>
17 #endif
18 #ifdef HAVE_LIBXRANDR
19 # include <X11/extensions/Xrandr.h>
20 #endif
21 #ifdef HAVE_LIBXDPMS
22 # include <X11/extensions/dpms.h>
23 /* XFree 3.3.x has'nt prototypes for this ... */
24 Bool   DPMSQueryExtension(Display*, int*, int*);
25 Bool   DPMSCapable(Display*);
26 Status DPMSInfo(Display*, CARD16*, BOOL*);
27 Status DPMSEnable(Display*);
28 Status DPMSDisable(Display*);
29 #endif
30 
31 struct ARGS {
32     /* char */
33     char *device;
34     char *driver;
35     char *dspdev;
36     char *vbidev;
37     char *joydev;
38     char *basename;
39     char *conffile;
40     char *alsa_cap;
41     char *alsa_pb;
42 
43     /* int */
44     int  debug;
45     int  bpp;
46     int  shift;
47     int  xv_port;
48     int  parallel;
49     int  bufcount;
50     int  alsa_latency; /* In ms */
51 
52     /* boolean */
53     int  remote;
54     int  readconfig;
55     int  fullscreen;
56     int  fbdev;
57     int  xv;
58     int  xv_video;
59     int  xv_image;
60     int  gl;
61     int  alsa;
62     int  vidmode;
63     int  dga;
64     int  randr;
65     int  help;
66     int  hwscan;
67 };
68 
69 extern struct ARGS args;
70 extern XtResource args_desc[];
71 extern XrmOptionDescRec opt_desc[];
72 
73 extern const int args_count;
74 extern const int opt_count;
75 
76 /*----------------------------------------------------------------------*/
77 
78 extern XtAppContext      app_context;
79 extern Widget            app_shell, tv;
80 extern Widget            on_shell;
81 extern Display           *dpy;
82 extern int               stay_on_top;
83 
84 extern XVisualInfo       vinfo;
85 extern Colormap          colormap;
86 
87 extern int               have_dga;
88 extern int               have_vm;
89 extern int               have_randr;
90 extern int               fs;
91 
92 extern void              *movie_state;
93 extern int               movie_blit;
94 
95 extern XtIntervalId      zap_timer,scan_timer;
96 
97 #ifdef HAVE_LIBXXF86VM
98 extern int               vm_count;
99 extern XF86VidModeModeInfo **vm_modelines;
100 #endif
101 #ifdef HAVE_LIBXINERAMA
102 extern XineramaScreenInfo *xinerama;
103 extern int                nxinerama;
104 #endif
105 #ifdef HAVE_LIBXRANDR
106 extern XRRScreenSize      *randr;
107 extern int                nrandr;
108 #endif
109 
110 extern char v4l_conf[128];
111 
112 #define ZAP_TIME            8000
113 #define CAP_TIME             100
114 #define SCAN_TIME            100
115 
116 #define ONSCREEN_TIME       5000
117 #define TITLE_TIME          6000
118 #define WIDTH_INC             32
119 #define HEIGHT_INC            24
120 #define VIDMODE_DELAY        100   /* 0.1 sec */
121 
122 /*----------------------------------------------------------------------*/
123 
124 /* defined in main.c / motif.c */
125 void toolkit_set_label(Widget widget, char *str);
126 
127 /*----------------------------------------------------------------------*/
128 
129 Boolean ExitWP(XtPointer client_data);
130 void ExitCB(Widget widget, XtPointer client_data, XtPointer calldata);
131 void do_exit(void);
132 void CloseMainAction(Widget widget, XEvent *event,
133 		     String *params, Cardinal *num_params);
134 void ZapAction(Widget, XEvent*, String*, Cardinal*);
135 void ScanAction(Widget, XEvent*, String*, Cardinal*);
136 void RatioAction(Widget, XEvent*, String*, Cardinal*);
137 void LaunchAction(Widget, XEvent*, String*, Cardinal*);
138 void VtxAction(Widget, XEvent*, String*, Cardinal*);
139 void FilterAction(Widget, XEvent*, String*, Cardinal*);
140 void EventAction(Widget, XEvent*, String*, Cardinal*);
141 
142 Boolean MyResize(XtPointer client_data);
143 void do_fullscreen(void);
144 
145 void create_onscreen(WidgetClass class);
146 Boolean rec_work(XtPointer client_data);
147 
148 void exec_done(int signal);
149 /* static void exec_output(XtPointer data, int *fd, XtInputId * iproc); */
150 int exec_x11(char **argv);
151 void exec_player(char *moviefile);
152 void xt_siginit(void);
153 
154 void new_title(char *txt);
155 void new_message(char *txt);
156 void change_audio(int mode);
157 void tv_expose_event(Widget widget, XtPointer client_data,
158 		     XEvent *event, Boolean *d);
159 
160 /*----------------------------------------------------------------------*/
161 
162 struct DO_CMD {
163     int   argc;
164     char  *argv[8];
165 };
166 
167 void command_cb(Widget widget, XtPointer clientdata, XtPointer call_data);
168 
169 /*----------------------------------------------------------------------*/
170 
171 void CommandAction(Widget, XEvent*, String*, Cardinal*);
172 void RemoteAction(Widget, XEvent*, String*, Cardinal*);
173 void set_property(int freq, char *channel, char *name);
174 
175 /*----------------------------------------------------------------------*/
176 
177 void x11_misc_init(Display *dpy);
178 void xfree_dga_init(Display *dpy);
179 void xfree_xinerama_init(Display *dpy);
180 void xfree_vm_init(Display *dpy);
181 void xfree_randr_init(Display *dpy);
182 
183 void grabber_init(void);
184 void grabber_scan(void);
185 void x11_check_remote(void);
186 void visual_init(char *n1, char *n2);
187 void hello_world(char *name);
188 void handle_cmdline_args(void);
189 void v4lconf_init(void);
190 int x11_ctrl_alt_backspace(Display *dpy);
191 
192 void mouse_event(Widget widget, XtPointer client_data,
193 		 XEvent *event, Boolean *d);
194 
195 /*----------------------------------------------------------------------*/
196 
197 extern char x11_vbi_station[];
198 
199 int x11_vbi_start(char *device);
200 int x11_vbi_tuned(void);
201 void x11_vbi_stop(void);
202 
203 /*----------------------------------------------------------------------*/
204 
205 int xt_lirc_init(void);
206 int xt_midi_init(char *dev);
207 int xt_joystick_init(void);
208 void init_icon_window(Widget shell,WidgetClass class);
209 void xt_kbd_init(Widget tv);
210 
211 /*----------------------------------------------------------------------*/
212 
213 void create_pointers(Widget);
214 void create_bitmaps(Widget);
215 
216 extern Cursor  left_ptr;
217 extern Cursor  menu_ptr;
218 extern Cursor  qu_ptr;
219 extern Cursor  no_ptr;
220 
221 extern Pixmap bm_yes;
222 extern Pixmap bm_no;
223 
224 /*----------------------------------------------------------------------*/
225 
226 int xt_handle_pending(Display *dpy);
227 int xt_vm_randr_input_init(Display *dpy);
228 int xt_main_loop(void);
229