1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
|
/*
(c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org)
(c) Copyright 2000-2004 Convergence (integrated media) GmbH
All rights reserved.
Written by Denis Oliver Kropp <dok@directfb.org>,
Andreas Hundt <andi@fischlustig.de>,
Sven Neumann <neo@directfb.org>,
Ville Syrjälä <syrjala@sci.fi> and
Claudio Ciccani <klan@users.sf.net>.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#ifndef __CONF_H__
#define __CONF_H__
#include <signal.h>
#include <directfb.h>
#include <fusion/types.h>
#include <fusion/vector.h>
#include <core/coredefs.h>
typedef struct {
bool init;
DFBDisplayLayerConfig config;
DFBColor src_key;
int src_key_index;
struct {
DFBDisplayLayerBackgroundMode mode;
DFBColor color;
int color_index;
char *filename;
} background;
DFBWindowStackingClass stacking;
DFBColor *palette;
bool palette_set;
int rotate;
} DFBConfigLayer;
typedef enum {
DCWF_NONE = 0x00000000,
DCWF_CREATE_SURFACE = 0x00000001,
DCWF_CREATE_WINDOW = 0x00000002,
DCWF_ALLOCATE_BUFFER = 0x00000010,
DCWF_ALL = 0x00000013,
} DFBConfigWarnFlags;
typedef struct
{
bool mouse_motion_compression; /* use motion compression? */
char *mouse_protocol; /* mouse protocol */
char *mouse_source; /* mouse source device name */
bool mouse_gpm_source; /* mouse source is gpm? */
int window_policy; /* swapping policy for the
surface of a window */
int buffer_mode; /* default buffer mode for
primary layer */
bool pollvsync_after;
bool pollvsync_none;
bool software_only; /* disable hardware acceleration */
bool hardware_only; /* disable software fallbacks */
bool mmx; /* mmx support */
bool banner; /* startup banner */
bool force_windowed; /* prohibit exclusive modes */
bool deinit_check;
bool vt_switch; /* allocate a new VT */
int vt_num; /* number of TTY to use or -1
if the default */
bool kd_graphics; /* put terminal into graphics
mode */
DFBScreenEncoderTVStandards matrox_tv_std; /* Matrox TV standard */
int matrox_cable; /* Matrox cable type */
bool matrox_sgram; /* Use Matrox SGRAM features */
bool matrox_crtc2; /* Experimental CRTC2 stuff */
bool sync; /* Do sync() in core_init() */
bool vt_switching; /* Allow VT switching by
pressing Ctrl+Alt+<F?> */
char *fb_device; /* Used framebuffer device,
e.g. "/dev/fb0" */
struct {
int bus; /* PCI Bus */
int dev; /* PCI Device */
int func; /* PCI Function */
} pci;
bool lefty; /* Left handed mouse, swaps
left/right mouse buttons */
bool no_cursor; /* Never create a cursor */
bool translucent_windows; /* Allow translucent
windows */
struct {
int width; /* primary layer width */
int height; /* primary layer height */
int depth; /* primary layer depth */
DFBSurfacePixelFormat format; /* primary layer format */
} mode;
struct {
int width; /* scaled window width */
int height; /* scaled window height */
} scaled;
int videoram_limit; /* limit amount of video
memory used by DirectFB */
char *screenshot_dir; /* dump screen content into
this directory */
char *system; /* FBDev, SDL, etc. */
bool capslock_meta; /* map CapsLock -> Meta */
bool block_all_signals; /* block all signals */
int session; /* select multi app world */
int primary_layer; /* select alternative primary
display layer */
bool force_desktop; /* Desktop background is
the primary surface. */
bool linux_input_ir_only; /* Ignore non-IR devices. */
struct {
char *host; /* Remote host to connect to. */
int session; /* Remote session number. */
} remote;
char *wm; /* Window manager to use. */
bool vt; /* Use VT stuff at all? */
bool decorations; /* Enable window decorations. */
DFBSurfacePixelFormat font_format; /* Preferred font format. */
char *h3600_device; /* H3600 Touchscreen Device */
char *mut_device; /* MuTouch Device */
char *penmount_device; /* PenMount Device */
char *zytronic_device; /* Zytronic Device */
char *elo_device; /* elo Device */
int unichrome_revision; /* Unichrome hardware
revision number override */
bool dma; /* Enable DMA */
int agp; /* AGP mode */
int agpmem_limit; /* Limit of AGP memory
used by DirectFB */
bool i8xx_overlay_pipe_b; /* video overlay output via pixel pipe B */
bool primary_only; /* tell application only about primary layer */
bool thrifty_surface_buffers; /* don't keep system instance while video instance is alive */
bool surface_sentinel;
DFBConfigLayer layers[MAX_LAYERS];
DFBConfigLayer *config_layer;
DFBSurfaceRenderOptions render_options; /* default render options */
bool startstop; /* Issue StartDrawing/StopDrawing to driver */
unsigned long video_phys; /* Physical base address of video memory */
unsigned int video_length; /* Size of video memory */
unsigned long mmio_phys; /* Physical base address of MMIO area */
unsigned int mmio_length; /* Size of MMIO area */
int accelerator; /* Accelerator ID */
bool font_premult; /* Use premultiplied data in case of ARGB glyph images */
FusionVector linux_input_devices;
FusionVector tslib_devices;
bool thread_block_signals; /* Call direct_signals_block_all() in direct_thread_main() startup. */
bool linux_input_grab; /* Grab input devices. */
bool autoflip_window; /* If primary surface is non-flipping, but windowed, flip automatically. */
bool software_warn; /* Show warnings when doing/dropping software operations. */
int surface_shmpool_size; /* Set the size of the shared memory pool used for
shared system memory surfaces. */
bool no_cursor_updates; /* Never show the cursor etc. */
struct {
DFBConfigWarnFlags flags; /* Warn on various actions as window/surface creation. */
struct {
DFBDimension min_size;
} create_surface;
struct {
DFBDimension min_size;
} allocate_buffer;
} warn;
int keep_accumulators; /* Free accumulators above this limit */
bool software_trace;
unsigned int max_axis_rate;
unsigned int flip_notify_max_latency;
DFBWindowCursorFlags default_cursor_flags;
bool discard_repeat_events;
} DFBConfig;
extern DFBConfig *dfb_config;
/*
* Allocate Config struct, fill with defaults and parse command line options
* for overrides. Options identified as DirectFB options are stripped out
* of the array.
*/
DFBResult dfb_config_init( int *argc, char *(*argv[]) );
/*
* Read configuration options from file. Called by config_init().
*
* Returns DFB_IO if config file could not be opened.
* Returns DFB_UNSUPPORTED if file contains an invalid option.
* Returns DFB_INVARG if an invalid option assignment is done,
* e.g. "--desktop-buffer-mode=somethingwrong".
*/
DFBResult dfb_config_read( const char *filename );
/*
* Set indiviual option. Used by config_init(), config_read() and
* DirectFBSetOption()
*/
DFBResult dfb_config_set( const char *name, const char *value );
const char *dfb_config_usage( void );
DFBSurfacePixelFormat dfb_config_parse_pixelformat( const char *format );
#endif
|