/* (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 , Andreas Hundt , Sven Neumann , Ville Syrjälä and Claudio Ciccani . 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 #include #include #include #include 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+ */ 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