| core_system.h | | core_system.h | |
| /* | | /* | |
|
| (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (
directfb.org) | | (c) Copyright 2001-2010 The world wide DirectFB Open Source Community (
directfb.org) | |
| (c) Copyright 2000-2004 Convergence (integrated media) GmbH | | (c) Copyright 2000-2004 Convergence (integrated media) GmbH | |
| | | | |
| All rights reserved. | | All rights reserved. | |
| | | | |
| Written by Denis Oliver Kropp <dok@directfb.org>, | | Written by Denis Oliver Kropp <dok@directfb.org>, | |
| Andreas Hundt <andi@fischlustig.de>, | | Andreas Hundt <andi@fischlustig.de>, | |
| Sven Neumann <neo@directfb.org>, | | Sven Neumann <neo@directfb.org>, | |
| Ville Syrjälä <syrjala@sci.fi> and | | Ville Syrjälä <syrjala@sci.fi> and | |
| Claudio Ciccani <klan@users.sf.net>. | | Claudio Ciccani <klan@users.sf.net>. | |
| | | | |
| | | | |
| skipping to change at line 103 | | skipping to change at line 103 | |
| | | | |
| static unsigned int | | static unsigned int | |
| system_auxram_length( void ); | | system_auxram_length( void ); | |
| | | | |
| static void | | static void | |
| system_get_busid( int *ret_bus, int *ret_dev, int *ret_func ); | | system_get_busid( int *ret_bus, int *ret_dev, int *ret_func ); | |
| | | | |
| static void | | static void | |
| system_get_deviceid( unsigned int *ret_vendor_id, unsigned int *ret_device_
id ); | | system_get_deviceid( unsigned int *ret_vendor_id, unsigned int *ret_device_
id ); | |
| | | | |
|
| | | static int | |
| | | system_surface_data_size( void ); | |
| | | | |
| | | static void | |
| | | system_surface_data_init( CoreSurface *surface, void *data ); | |
| | | | |
| | | static void | |
| | | system_surface_data_destroy( CoreSurface *surface, void *data ); | |
| | | | |
| static CoreSystemFuncs system_funcs = { | | static CoreSystemFuncs system_funcs = { | |
| .GetSystemInfo = system_get_info, | | .GetSystemInfo = system_get_info, | |
| .Initialize = system_initialize, | | .Initialize = system_initialize, | |
| .Join = system_join, | | .Join = system_join, | |
| .Shutdown = system_shutdown, | | .Shutdown = system_shutdown, | |
| .Leave = system_leave, | | .Leave = system_leave, | |
| .Suspend = system_suspend, | | .Suspend = system_suspend, | |
| .Resume = system_resume, | | .Resume = system_resume, | |
| .GetModes = system_get_modes, | | .GetModes = system_get_modes, | |
| .GetCurrentMode = system_get_current_mode, | | .GetCurrentMode = system_get_current_mode, | |
| | | | |
| skipping to change at line 125 | | skipping to change at line 134 | |
| .MapMMIO = system_map_mmio, | | .MapMMIO = system_map_mmio, | |
| .UnmapMMIO = system_unmap_mmio, | | .UnmapMMIO = system_unmap_mmio, | |
| .GetAccelerator = system_get_accelerator, | | .GetAccelerator = system_get_accelerator, | |
| .VideoMemoryPhysical = system_video_memory_physical, | | .VideoMemoryPhysical = system_video_memory_physical, | |
| .VideoMemoryVirtual = system_video_memory_virtual, | | .VideoMemoryVirtual = system_video_memory_virtual, | |
| .VideoRamLength = system_videoram_length, | | .VideoRamLength = system_videoram_length, | |
| .AuxMemoryPhysical = system_aux_memory_physical, | | .AuxMemoryPhysical = system_aux_memory_physical, | |
| .AuxMemoryVirtual = system_aux_memory_virtual, | | .AuxMemoryVirtual = system_aux_memory_virtual, | |
| .AuxRamLength = system_auxram_length, | | .AuxRamLength = system_auxram_length, | |
| .GetBusID = system_get_busid, | | .GetBusID = system_get_busid, | |
|
| | | .SurfaceDataSize = system_surface_data_size, | |
| | | .SurfaceDataInit = system_surface_data_init, | |
| | | .SurfaceDataDestroy = system_surface_data_destroy, | |
| .GetDeviceID = system_get_deviceid | | .GetDeviceID = system_get_deviceid | |
| }; | | }; | |
| | | | |
| #define DFB_CORE_SYSTEM(shortname) \ | | #define DFB_CORE_SYSTEM(shortname) \ | |
| __attribute__((constructor)) void directfb_##shortname( void ); \ | | __attribute__((constructor)) void directfb_##shortname( void ); \ | |
| \ | | \ | |
| void \ | | void \ | |
| directfb_##shortname( void ) \ | | directfb_##shortname( void ) \ | |
| { \ | | { \ | |
| direct_modules_register( &dfb_core_systems, \ | | direct_modules_register( &dfb_core_systems, \ | |
| | | | |
End of changes. 3 change blocks. |
| 1 lines changed or deleted | | 13 lines changed or added | |
|
| debug.h | | debug.h | |
| | | | |
| skipping to change at line 59 | | skipping to change at line 59 | |
| bool registered; | | bool registered; | |
| | | | |
| const char *name; | | const char *name; | |
| const char *description; | | const char *description; | |
| | | | |
| int name_len; | | int name_len; | |
| } DirectDebugDomain; | | } DirectDebugDomain; | |
| | | | |
| void direct_debug_config_domain( const char *name, bool enable ); | | void direct_debug_config_domain( const char *name, bool enable ); | |
| | | | |
|
| | | bool direct_debug_check_domain( DirectDebugDomain *domain ); | |
| | | | |
| #if DIRECT_BUILD_TEXT | | #if DIRECT_BUILD_TEXT | |
| | | | |
| #define D_DEBUG_DOMAIN(identifier,name,description)
\ | | #define D_DEBUG_DOMAIN(identifier,name,description)
\ | |
| static DirectDebugDomain identifier __attribute__((unused))
\ | | static DirectDebugDomain identifier __attribute__((unused))
\ | |
| = { 0, false, false, name, description, sizeof(name) - 1 } | | = { 0, false, false, name, description, sizeof(name) - 1 } | |
| | | | |
| void direct_debug_at_always( DirectDebugDomain *domain, | | void direct_debug_at_always( DirectDebugDomain *domain, | |
| const char *format, ... ) D_FORMAT_PRI
NTF(2); | | const char *format, ... ) D_FORMAT_PRI
NTF(2); | |
| | | | |
| #define d_debug_at( domain, x... ) direct_debug_at_always( &domain, x
) | | #define d_debug_at( domain, x... ) direct_debug_at_always( &domain, x
) | |
| | | | |
| skipping to change at line 147 | | skipping to change at line 149 | |
| do {
\ | | do {
\ | |
| if (!(exp))
\ | | if (!(exp))
\ | |
| direct_assumption( #exp, __FUNCTION__, __FILE__, __LINE__ );
\ | | direct_assumption( #exp, __FUNCTION__, __FILE__, __LINE__ );
\ | |
| } while (0) | | } while (0) | |
| | | | |
| #define D_BREAK(x...)
\ | | #define D_BREAK(x...)
\ | |
| do {
\ | | do {
\ | |
| direct_break( __FUNCTION__, __FILE__, __LINE__, x );
\ | | direct_break( __FUNCTION__, __FILE__, __LINE__, x );
\ | |
| } while (0) | | } while (0) | |
| | | | |
|
| | | #define D_DEBUG_CHECK(d) | |
| | | \ | |
| | | direct_debug_check_domain( &d ) | |
| | | | |
| #elif defined(DIRECT_MINI_DEBUG) | | #elif defined(DIRECT_MINI_DEBUG) | |
| | | | |
| /* | | /* | |
| * Mini debug mode, only D_DEBUG_AT, no domain filters, simple assertion | | * Mini debug mode, only D_DEBUG_AT, no domain filters, simple assertion | |
| */ | | */ | |
| | | | |
| #define D_DEBUG_ENABLED (2) | | #define D_DEBUG_ENABLED (2) | |
| | | | |
| #define D_DEBUG_AT(d,x...)
\ | | #define D_DEBUG_AT(d,x...)
\ | |
| do {
\ | | do {
\ | |
| | | | |
| skipping to change at line 178 | | skipping to change at line 183 | |
| name ? name : " NO NAME ", millis / 100
0LL, millis % 1000LL, \ | | name ? name : " NO NAME ", millis / 100
0LL, millis % 1000LL, \ | |
| direct_gettid(), #exp, __FILE__, __LINE__
, __FUNCTION__ ); \ | | direct_gettid(), #exp, __FILE__, __LINE__
, __FUNCTION__ ); \ | |
|
\ | |
\ | |
| direct_trace_print_stack( NULL );
\ | | direct_trace_print_stack( NULL );
\ | |
| }
\ | | }
\ | |
| } while (0) | | } while (0) | |
| | | | |
| #define D_ASSERT(exp) D_CHECK(exp, Assertion) | | #define D_ASSERT(exp) D_CHECK(exp, Assertion) | |
| #define D_ASSUME(exp) D_CHECK(exp, Assumption) | | #define D_ASSUME(exp) D_CHECK(exp, Assumption) | |
| | | | |
|
| | | #define D_DEBUG_CHECK(d) | |
| | | \ | |
| | | direct_config->debug | |
| | | | |
| #endif /* MINI_DEBUG / DIRECT_BUILD_DEBUG || DIRECT_ENABLE_DEBUG || DIR
ECT_FORCE_DEBUG */ | | #endif /* MINI_DEBUG / DIRECT_BUILD_DEBUG || DIRECT_ENABLE_DEBUG || DIR
ECT_FORCE_DEBUG */ | |
| | | | |
| #endif /* DIRECT_BUILD_TEXT */ | | #endif /* DIRECT_BUILD_TEXT */ | |
| | | | |
| /* | | /* | |
| * Fallback definitions, e.g. without DIRECT_BUILD_TEXT or DIRECT_ENABLE_DE
BUG | | * Fallback definitions, e.g. without DIRECT_BUILD_TEXT or DIRECT_ENABLE_DE
BUG | |
| */ | | */ | |
| | | | |
| #ifndef D_DEBUG_ENABLED | | #ifndef D_DEBUG_ENABLED | |
| #define D_DEBUG_ENABLED (0) | | #define D_DEBUG_ENABLED (0) | |
| | | | |
| skipping to change at line 214 | | skipping to change at line 222 | |
| #endif | | #endif | |
| | | | |
| #ifndef D_ASSERT | | #ifndef D_ASSERT | |
| #define D_ASSERT(exp) do {} while (0) | | #define D_ASSERT(exp) do {} while (0) | |
| #endif | | #endif | |
| | | | |
| #ifndef D_ASSUME | | #ifndef D_ASSUME | |
| #define D_ASSUME(exp) do {} while (0) | | #define D_ASSUME(exp) do {} while (0) | |
| #endif | | #endif | |
| | | | |
|
| | | #ifndef D_DEBUG_CHECK | |
| | | #define D_DEBUG_CHECK(d) false | |
| | | #endif | |
| | | | |
| #ifndef D_BREAK | | #ifndef D_BREAK | |
| #define D_BREAK(x...) do {} while (0) | | #define D_BREAK(x...) do {} while (0) | |
| #endif | | #endif | |
| | | | |
| #ifndef d_debug_at | | #ifndef d_debug_at | |
| #define d_debug_at( domain, x... ) do {} while (0) | | #define d_debug_at( domain, x... ) do {} while (0) | |
| #endif | | #endif | |
| | | | |
| #ifndef D_DEBUG_DOMAIN | | #ifndef D_DEBUG_DOMAIN | |
| #define D_DEBUG_DOMAIN(i,n,d) | | #define D_DEBUG_DOMAIN(i,n,d) | |
| | | | |
End of changes. 4 change blocks. |
| 0 lines changed or deleted | | 14 lines changed or added | |
|
| directfb.h | | directfb.h | |
| | | | |
| skipping to change at line 1389 | | skipping to change at line 1389 | |
| between hardware | | between hardware | |
| keys is made */ | | keys is made */ | |
| DFBInputDeviceAxisIdentifier max_axis; /* highest axis | | DFBInputDeviceAxisIdentifier max_axis; /* highest axis | |
| identifier */ | | identifier */ | |
| DFBInputDeviceButtonIdentifier max_button; /* highest button | | DFBInputDeviceButtonIdentifier max_button; /* highest button | |
| identifier */ | | identifier */ | |
| | | | |
| char name[DFB_INPUT_DEVICE_DESC_NAME_LENGTH]; /* Device name */ | | char name[DFB_INPUT_DEVICE_DESC_NAME_LENGTH]; /* Device name */ | |
| | | | |
| char vendor[DFB_INPUT_DEVICE_DESC_VENDOR_LENGTH]; /* Device vendor */ | | char vendor[DFB_INPUT_DEVICE_DESC_VENDOR_LENGTH]; /* Device vendor */ | |
|
| | | | |
| | | int vendor_id; /* Vendor ID */ | |
| | | int product_id; /* Product ID */ | |
| } DFBInputDeviceDescription; | | } DFBInputDeviceDescription; | |
| | | | |
| typedef enum { | | typedef enum { | |
| DIAIF_NONE = 0x00000000, | | DIAIF_NONE = 0x00000000, | |
| | | | |
| DIAIF_ABS_MIN = 0x00000001, | | DIAIF_ABS_MIN = 0x00000001, | |
| DIAIF_ABS_MAX = 0x00000002, | | DIAIF_ABS_MAX = 0x00000002, | |
| | | | |
| DIAIF_ALL = 0x00000003 | | DIAIF_ALL = 0x00000003 | |
| } DFBInputDeviceAxisInfoFlags; | | } DFBInputDeviceAxisInfoFlags; | |
| | | | |
| skipping to change at line 5737 | | skipping to change at line 5740 | |
| ); | | ); | |
| | | | |
| /* | | /* | |
| * Find an encoding by its name. | | * Find an encoding by its name. | |
| */ | | */ | |
| DFBResult (*FindEncoding) ( | | DFBResult (*FindEncoding) ( | |
| IDirectFBFont *thiz, | | IDirectFBFont *thiz, | |
| const char *name, | | const char *name, | |
| DFBTextEncodingID *ret_encoding | | DFBTextEncodingID *ret_encoding | |
| ); | | ); | |
|
| | | | |
| | | /** Resources **/ | |
| | | | |
| | | /* | |
| | | * Dispose resources used by the font. | |
| | | * | |
| | | * Keeps font usable, recreating resources as needed. | |
| | | */ | |
| | | DFBResult (*Dispose) ( | |
| | | IDirectFBFont *thiz | |
| | | ); | |
| ) | | ) | |
| | | | |
| /* | | /* | |
| * Capabilities of an image. | | * Capabilities of an image. | |
| */ | | */ | |
| typedef enum { | | typedef enum { | |
| DICAPS_NONE = 0x00000000, /* None of these. */ | | DICAPS_NONE = 0x00000000, /* None of these. */ | |
| DICAPS_ALPHACHANNEL = 0x00000001, /* The image data contains an | | DICAPS_ALPHACHANNEL = 0x00000001, /* The image data contains an | |
| alphachannel. */ | | alphachannel. */ | |
| DICAPS_COLORKEY = 0x00000002 /* The image has a colorkey, | | DICAPS_COLORKEY = 0x00000002 /* The image has a colorkey, | |
| | | | |
| skipping to change at line 5941 | | skipping to change at line 5955 | |
| * Buffer levels and occupancy for Audio/Video input buffers. | | * Buffer levels and occupancy for Audio/Video input buffers. | |
| */ | | */ | |
| typedef struct { | | typedef struct { | |
| DFBStreamCapabilities valid; /* Which of the Audio / Video sect
ions are valid. */ | | DFBStreamCapabilities valid; /* Which of the Audio / Video sect
ions are valid. */ | |
| | | | |
| struct { | | struct { | |
| unsigned int buffer_size; /* Size in bytes of the input buff
er to video decoder */ | | unsigned int buffer_size; /* Size in bytes of the input buff
er to video decoder */ | |
| unsigned int minimum_level; /* The level at which a DVPET_DATA
LOW event will be generated. */ | | unsigned int minimum_level; /* The level at which a DVPET_DATA
LOW event will be generated. */ | |
| unsigned int maximum_level; /* The level at which a DVPET_DATA
HIGH event will be generated. */ | | unsigned int maximum_level; /* The level at which a DVPET_DATA
HIGH event will be generated. */ | |
| unsigned int current_level; /* Current fill level of video inp
ut buffer.*/ | | unsigned int current_level; /* Current fill level of video inp
ut buffer.*/ | |
|
| } video; | | } video; /* struct containing the above two
encoding properties for video */ | |
| | | | |
| struct { | | struct { | |
| unsigned int buffer_size; /* Size in bytes of the input buff
er to audio decoder */ | | unsigned int buffer_size; /* Size in bytes of the input buff
er to audio decoder */ | |
| unsigned int minimum_level; /* The level at which a DVPET_DATA
LOW event will be generated. */ | | unsigned int minimum_level; /* The level at which a DVPET_DATA
LOW event will be generated. */ | |
| unsigned int maximum_level; /* The level at which a DVPET_DATA
HIGH event will be generated. */ | | unsigned int maximum_level; /* The level at which a DVPET_DATA
HIGH event will be generated. */ | |
| unsigned int current_level; /* Current fill level of audio inp
ut buffer.*/ | | unsigned int current_level; /* Current fill level of audio inp
ut buffer.*/ | |
|
| } audio; | | } audio; /* struct containing the above two
encoding properties for audio */ | |
| } DFBBufferOccupancy; | | } DFBBufferOccupancy; | |
| | | | |
| /* | | /* | |
| * Buffer thresholds for Audio and Video. | | * Buffer thresholds for Audio and Video. | |
| */ | | */ | |
| typedef struct { | | typedef struct { | |
| DFBStreamCapabilities selection; /* Which of the Audio / Video are
we setting? */ | | DFBStreamCapabilities selection; /* Which of the Audio / Video are
we setting? */ | |
| | | | |
| struct { | | struct { | |
| unsigned int minimum_level; /* The level at which a DVPET_DATA
LOW event will be generated. */ | | unsigned int minimum_level; /* The level at which a DVPET_DATA
LOW event will be generated. */ | |
| unsigned int maximum_level; /* The level at which a DVPET_DATA
HIGH event will be generated. */ | | unsigned int maximum_level; /* The level at which a DVPET_DATA
HIGH event will be generated. */ | |
| unsigned int minimum_time; /* The level at which a DVPET_BUFF
ERTIMELOW event will be generated. */ | | unsigned int minimum_time; /* The level at which a DVPET_BUFF
ERTIMELOW event will be generated. */ | |
| unsigned int maximum_time; /* The level at which a DVPET_BUFF
ERTIMEHIGH event will be generated. */ | | unsigned int maximum_time; /* The level at which a DVPET_BUFF
ERTIMEHIGH event will be generated. */ | |
|
| } video; | | } video; /* struct containing the above two
encoding properties for video */ | |
| | | | |
| struct { | | struct { | |
| unsigned int minimum_level; /* The level at which a DVPET_DATA
LOW event will be generated. */ | | unsigned int minimum_level; /* The level at which a DVPET_DATA
LOW event will be generated. */ | |
| unsigned int maximum_level; /* The level at which a DVPET_DATA
HIGH event will be generated. */ | | unsigned int maximum_level; /* The level at which a DVPET_DATA
HIGH event will be generated. */ | |
| unsigned int minimum_time; /* The level at which a DVPET_BUFF
ERTIMELOW event will be generated. */ | | unsigned int minimum_time; /* The level at which a DVPET_BUFF
ERTIMELOW event will be generated. */ | |
| unsigned int maximum_time; /* The level at which a DVPET_BUFF
ERTIMEHIGH event will be generated. */ | | unsigned int maximum_time; /* The level at which a DVPET_BUFF
ERTIMEHIGH event will be generated. */ | |
|
| } audio; | | } audio; /* struct containing the above two
encoding properties for audio */ | |
| } DFBBufferThresholds; | | } DFBBufferThresholds; | |
| | | | |
| /* | | /* | |
| * Called for each written frame. | | * Called for each written frame. | |
| */ | | */ | |
| typedef void (*DVFrameCallback)(void *ctx); | | typedef void (*DVFrameCallback)(void *ctx); | |
| | | | |
| /************************** | | /************************** | |
| * IDirectFBVideoProvider * | | * IDirectFBVideoProvider * | |
| **************************/ | | **************************/ | |
| | | | |
End of changes. 6 change blocks. |
| 4 lines changed or deleted | | 18 lines changed or added | |
|
| fonts.h | | fonts.h | |
| | | | |
| skipping to change at line 42 | | skipping to change at line 42 | |
| #include <pthread.h> | | #include <pthread.h> | |
| | | | |
| #include <fusion/lock.h> | | #include <fusion/lock.h> | |
| | | | |
| #include <directfb.h> | | #include <directfb.h> | |
| | | | |
| #include <core/coretypes.h> | | #include <core/coretypes.h> | |
| | | | |
| #include <core/state.h> | | #include <core/state.h> | |
| | | | |
|
| | | typedef struct { | |
| | | unsigned int height; | |
| | | DFBSurfacePixelFormat pixel_format; | |
| | | DFBSurfaceCapabilities surface_caps; | |
| | | } DFBFontCacheType; | |
| | | | |
| | | DFBResult dfb_font_manager_create ( CoreDFB *core, | |
| | | DFBFontManager **ret_man | |
| | | ager ); | |
| | | DFBResult dfb_font_manager_destroy ( DFBFontManager *manager | |
| | | ); | |
| | | DFBResult dfb_font_manager_init ( DFBFontManager *manager | |
| | | , | |
| | | CoreDFB *core ); | |
| | | DFBResult dfb_font_manager_deinit ( DFBFontManager *manager | |
| | | ); | |
| | | | |
| | | DFBResult dfb_font_manager_lock ( DFBFontManager *manager | |
| | | ); | |
| | | DFBResult dfb_font_manager_unlock ( DFBFontManager *manager | |
| | | ); | |
| | | | |
| | | DFBResult dfb_font_manager_get_cache ( DFBFontManager *manager | |
| | | , | |
| | | const DFBFontCacheType *type, | |
| | | DFBFontCache **ret_cac | |
| | | he ); | |
| | | | |
| | | DFBResult dfb_font_manager_remove_lru_row( DFBFontManager *manager | |
| | | ); | |
| | | | |
| | | DFBResult dfb_font_cache_create ( DFBFontManager *manager | |
| | | , | |
| | | const DFBFontCacheType *type, | |
| | | DFBFontCache **ret_cac | |
| | | he ); | |
| | | DFBResult dfb_font_cache_destroy ( DFBFontCache *cache ) | |
| | | ; | |
| | | DFBResult dfb_font_cache_init ( DFBFontCache *cache, | |
| | | DFBFontManager *manager | |
| | | , | |
| | | const DFBFontCacheType *type ); | |
| | | DFBResult dfb_font_cache_deinit ( DFBFontCache *cache ) | |
| | | ; | |
| | | DFBResult dfb_font_cache_get_row ( DFBFontCache *cache, | |
| | | unsigned int width, | |
| | | DFBFontCacheRow **ret_row | |
| | | ); | |
| | | | |
| | | DFBResult dfb_font_cache_row_create ( DFBFontCache *cache, | |
| | | DFBFontCacheRow **ret_row | |
| | | ); | |
| | | DFBResult dfb_font_cache_row_destroy ( DFBFontCacheRow *row ); | |
| | | DFBResult dfb_font_cache_row_init ( DFBFontCacheRow *row, | |
| | | DFBFontCache *cache ) | |
| | | ; | |
| | | DFBResult dfb_font_cache_row_deinit ( DFBFontCacheRow *row ); | |
| | | | |
| /* | | /* | |
| * glyph struct | | * glyph struct | |
| */ | | */ | |
| struct _CoreGlyphData { | | struct _CoreGlyphData { | |
|
| DirectLink link; | | DirectLink link; | |
| | | | |
|
| unsigned int index; | | CoreFont *font; | |
| unsigned int layer; | | | |
| unsigned int row; | | | |
| | | | |
|
| CoreSurface *surface; /* contains bitmap of glyph | | unsigned int index; | |
| */ | | unsigned int layer; | |
| int start; /* x offset of glyph in surface | | | |
| */ | | | |
| int width; /* width of the glyphs bitmap | | | |
| */ | | | |
| int height; /* height of the glyphs bitmap | | | |
| */ | | | |
| int left; /* x offset of the glyph | | | |
| */ | | | |
| int top; /* y offset of the glyph | | | |
| */ | | | |
| int advance; /* placement of next glyph | | | |
| */ | | | |
| | | | |
|
| int magic; | | CoreSurface *surface; /* contains bitmap of glyph | |
| | | */ | |
| | | int start; /* x offset of glyph in surface | |
| | | */ | |
| | | int width; /* width of the glyphs bitmap | |
| | | */ | |
| | | int height; /* height of the glyphs bitmap | |
| | | */ | |
| | | int left; /* x offset of the glyph | |
| | | */ | |
| | | int top; /* y offset of the glyph | |
| | | */ | |
| | | int advance; /* placement of next glyph | |
| | | */ | |
| | | | |
| | | int magic; | |
| | | | |
| | | DFBFontCache *cache; | |
| | | DFBFontCacheRow *row; | |
| }; | | }; | |
| | | | |
|
| | | #define CORE_GLYPH_DATA_DEBUG_AT(Domain, data) | |
| | | \ | |
| | | do { | |
| | | \ | |
| | | D_DEBUG_AT( Domain, " -> index %d\n", (data)->index ); | |
| | | \ | |
| | | D_DEBUG_AT( Domain, " -> layer %d\n", (data)->layer ); | |
| | | \ | |
| | | D_DEBUG_AT( Domain, " -> row %p\n", (data)->row ); | |
| | | \ | |
| | | D_DEBUG_AT( Domain, " -> surface %p\n", (data)->surface ); | |
| | | \ | |
| | | D_DEBUG_AT( Domain, " -> start %d\n", (data)->start ); | |
| | | \ | |
| | | D_DEBUG_AT( Domain, " -> width %d\n", (data)->width ); | |
| | | \ | |
| | | D_DEBUG_AT( Domain, " -> height %d\n", (data)->height ); | |
| | | \ | |
| | | D_DEBUG_AT( Domain, " -> left %d\n", (data)->left ); | |
| | | \ | |
| | | D_DEBUG_AT( Domain, " -> top %d\n", (data)->top ); | |
| | | \ | |
| | | D_DEBUG_AT( Domain, " -> advance %d\n", (data)->advance ); | |
| | | \ | |
| | | } while (0) | |
| | | | |
| typedef struct { | | typedef struct { | |
| DFBResult (* GetCharacterIndex) ( CoreFont *thiz, | | DFBResult (* GetCharacterIndex) ( CoreFont *thiz, | |
| unsigned int character, | | unsigned int character, | |
| unsigned int *ret_index ); | | unsigned int *ret_index ); | |
| | | | |
| DFBResult (* DecodeText) ( CoreFont *thiz, | | DFBResult (* DecodeText) ( CoreFont *thiz, | |
| const void *text, | | const void *text, | |
| int length, | | int length, | |
| unsigned int *ret_indices, | | unsigned int *ret_indices, | |
| int *ret_num ); | | int *ret_num ); | |
| | | | |
| skipping to change at line 85 | | skipping to change at line 144 | |
| typedef struct { | | typedef struct { | |
| DirectLink link; | | DirectLink link; | |
| | | | |
| DFBTextEncodingID encoding; | | DFBTextEncodingID encoding; | |
| char *name; | | char *name; | |
| const CoreFontEncodingFuncs *funcs; | | const CoreFontEncodingFuncs *funcs; | |
| | | | |
| int magic; | | int magic; | |
| } CoreFontEncoding; | | } CoreFontEncoding; | |
| | | | |
|
| typedef struct { | | | |
| unsigned int stamp; | | | |
| | | | |
| CoreSurface *surface; | | | |
| int next_x; | | | |
| | | | |
| DirectLink *glyphs; | | | |
| | | | |
| int magic; | | | |
| } CoreFontCacheRow; | | | |
| | | | |
| #define DFB_FONT_MAX_LAYERS 2 | | #define DFB_FONT_MAX_LAYERS 2 | |
| | | | |
| /* | | /* | |
| * font struct | | * font struct | |
| */ | | */ | |
| | | | |
| struct _CoreFont { | | struct _CoreFont { | |
| CoreDFB *core; | | CoreDFB *core; | |
| | | | |
|
| | | DFBFontManager *manager; | |
| | | | |
| DFBSurfaceBlittingFlags blittingflags; | | DFBSurfaceBlittingFlags blittingflags; | |
| DFBSurfacePixelFormat pixel_format; | | DFBSurfacePixelFormat pixel_format; | |
| DFBSurfaceCapabilities surface_caps; | | DFBSurfaceCapabilities surface_caps; | |
|
| int row_width; | | | |
| int max_rows; | | | |
| | | | |
| DFBFontAttributes attributes; | | DFBFontAttributes attributes; | |
| | | | |
|
| CoreFontCacheRow **rows; /* contain bitmaps of loa | | | |
| ded glyphs */ | | | |
| int num_rows; | | | |
| int active_row; | | | |
| unsigned int row_stamp; | | | |
| | | | |
| struct { | | struct { | |
| DirectHash *glyph_hash; /* infos about loaded gly
phs */ | | DirectHash *glyph_hash; /* infos about loaded gly
phs */ | |
| CoreGlyphData *glyph_data[128]; | | CoreGlyphData *glyph_data[128]; | |
| } layers[DFB_FONT_MAX_LAYERS]; | | } layers[DFB_FONT_MAX_LAYERS]; | |
| | | | |
| int height; /* font height
*/ | | int height; /* font height
*/ | |
| | | | |
| int ascender; /* a positive value, the
distance | | int ascender; /* a positive value, the
distance | |
| from the baseline to t
he top */ | | from the baseline to t
he top */ | |
| int descender; /* a negative value, the
distance | | int descender; /* a negative value, the
distance | |
| from the baseline to t
he bottom */ | | from the baseline to t
he bottom */ | |
| int maxadvance; /* width of largest chara
cter */ | | int maxadvance; /* width of largest chara
cter */ | |
| | | | |
|
| pthread_mutex_t lock; /* lock during access to | | | |
| the font */ | | | |
| | | | |
| const CoreFontEncodingFuncs *utf8; /* for default encoding,
DTEID_UTF8 */ | | const CoreFontEncodingFuncs *utf8; /* for default encoding,
DTEID_UTF8 */ | |
| CoreFontEncoding **encodings; /* for other encodings
*/ | | CoreFontEncoding **encodings; /* for other encodings
*/ | |
| DFBTextEncodingID last_encoding; /* dynamic allocation imp
l. helper */ | | DFBTextEncodingID last_encoding; /* dynamic allocation imp
l. helper */ | |
| | | | |
| void *impl_data; /* a pointer used by the
impl. */ | | void *impl_data; /* a pointer used by the
impl. */ | |
| | | | |
| DFBResult (* GetGlyphData) ( CoreFont *thiz, | | DFBResult (* GetGlyphData) ( CoreFont *thiz, | |
| unsigned int index, | | unsigned int index, | |
| CoreGlyphData *data ); | | CoreGlyphData *data ); | |
| | | | |
| | | | |
| skipping to change at line 156 | | skipping to change at line 197 | |
| | | | |
| DFBResult (* GetKerning) ( CoreFont *thiz, | | DFBResult (* GetKerning) ( CoreFont *thiz, | |
| unsigned int prev, | | unsigned int prev, | |
| unsigned int current, | | unsigned int current, | |
| int *ret_x, | | int *ret_x, | |
| int *ret_y ); | | int *ret_y ); | |
| | | | |
| int magic; | | int magic; | |
| }; | | }; | |
| | | | |
|
| | | #define CORE_FONT_DEBUG_AT(Domain, font) | |
| | | \ | |
| | | do { | |
| | | \ | |
| | | D_DEBUG_AT( Domain, " -> ascender %d\n", (font)->ascender ); | |
| | | \ | |
| | | D_DEBUG_AT( Domain, " -> descender %d\n", (font)->descender ); | |
| | | \ | |
| | | D_DEBUG_AT( Domain, " -> height %d\n", (font)->height ); | |
| | | \ | |
| | | } while (0) | |
| | | | |
| /* | | /* | |
| * allocates and initializes a new font structure | | * allocates and initializes a new font structure | |
| */ | | */ | |
| DFBResult dfb_font_create( CoreDFB *core, CoreFont **ret_font ); | | DFBResult dfb_font_create( CoreDFB *core, CoreFont **ret_font ); | |
| | | | |
| /* | | /* | |
| * destroy all data in the CoreFont struct | | * destroy all data in the CoreFont struct | |
| */ | | */ | |
| void dfb_font_destroy( CoreFont *font ); | | void dfb_font_destroy( CoreFont *font ); | |
| | | | |
| /* | | /* | |
|
| | | * dispose resources that can be recreated, mainly glyph cache surfaces | |
| | | */ | |
| | | DFBResult dfb_font_dispose( CoreFont *font ); | |
| | | | |
| | | /* | |
| * lock the font before accessing it | | * lock the font before accessing it | |
| */ | | */ | |
| static inline void | | static inline void | |
| dfb_font_lock( CoreFont *font ) | | dfb_font_lock( CoreFont *font ) | |
| { | | { | |
| D_MAGIC_ASSERT( font, CoreFont ); | | D_MAGIC_ASSERT( font, CoreFont ); | |
| | | | |
|
| pthread_mutex_lock( &font->lock ); | | dfb_font_manager_lock( font->manager ); | |
| } | | } | |
| | | | |
| /* | | /* | |
| * unlock the font after access | | * unlock the font after access | |
| */ | | */ | |
| static inline void | | static inline void | |
| dfb_font_unlock( CoreFont *font ) | | dfb_font_unlock( CoreFont *font ) | |
| { | | { | |
| D_MAGIC_ASSERT( font, CoreFont ); | | D_MAGIC_ASSERT( font, CoreFont ); | |
| | | | |
|
| pthread_mutex_unlock( &font->lock ); | | dfb_font_manager_unlock( font->manager ); | |
| } | | } | |
| | | | |
| /* | | /* | |
| * loads glyph data from font | | * loads glyph data from font | |
| */ | | */ | |
| DFBResult dfb_font_get_glyph_data( CoreFont *font, | | DFBResult dfb_font_get_glyph_data( CoreFont *font, | |
| unsigned int index, | | unsigned int index, | |
| unsigned int layer, | | unsigned int layer, | |
| CoreGlyphData **glyph_data ); | | CoreGlyphData **glyph_data ); | |
| | | | |
| | | | |
End of changes. 15 change blocks. |
| 43 lines changed or deleted | | 128 lines changed or added | |
|
| surface.h | | surface.h | |
| /* | | /* | |
|
| (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (
directfb.org) | | (c) Copyright 2001-2010 The world wide DirectFB Open Source Community (
directfb.org) | |
| (c) Copyright 2000-2004 Convergence (integrated media) GmbH | | (c) Copyright 2000-2004 Convergence (integrated media) GmbH | |
| | | | |
| All rights reserved. | | All rights reserved. | |
| | | | |
| Written by Denis Oliver Kropp <dok@directfb.org>, | | Written by Denis Oliver Kropp <dok@directfb.org>, | |
| Andreas Hundt <andi@fischlustig.de>, | | Andreas Hundt <andi@fischlustig.de>, | |
| Sven Neumann <neo@directfb.org>, | | Sven Neumann <neo@directfb.org>, | |
| Ville Syrjälä <syrjala@sci.fi> and | | Ville Syrjälä <syrjala@sci.fi> and | |
| Claudio Ciccani <klan@users.sf.net>. | | Claudio Ciccani <klan@users.sf.net>. | |
| | | | |
| | | | |
| skipping to change at line 149 | | skipping to change at line 149 | |
| | | | |
| CSAID_GPU = 0x00000002, /* primary accelerator, as in tradi
tional 'gfxcard' core (ACCEL0) */ | | CSAID_GPU = 0x00000002, /* primary accelerator, as in tradi
tional 'gfxcard' core (ACCEL0) */ | |
| | | | |
| CSAID_ACCEL0 = 0x00000002, /* accelerators, decoders etc. (CSA
ID_ACCEL0 + accel_id<0-5>) */ | | CSAID_ACCEL0 = 0x00000002, /* accelerators, decoders etc. (CSA
ID_ACCEL0 + accel_id<0-5>) */ | |
| CSAID_ACCEL1 = 0x00000003, | | CSAID_ACCEL1 = 0x00000003, | |
| CSAID_ACCEL2 = 0x00000004, | | CSAID_ACCEL2 = 0x00000004, | |
| CSAID_ACCEL3 = 0x00000005, | | CSAID_ACCEL3 = 0x00000005, | |
| CSAID_ACCEL4 = 0x00000006, | | CSAID_ACCEL4 = 0x00000006, | |
| CSAID_ACCEL5 = 0x00000007, | | CSAID_ACCEL5 = 0x00000007, | |
| | | | |
|
| CSAID_LAYER0 = 0x00000008, /* display layers, registered by la
yer core (CSAID_LAYER0 + layer_id<0-7>) */ | | CSAID_LAYER0 = 0x00000008, /* display layers, registered by la
yer core (CSAID_LAYER0 + layer_id<0-MAX_LAYERS>) */ | |
| CSAID_LAYER1 = 0x00000009, | | CSAID_LAYER1 = 0x00000009, | |
| CSAID_LAYER2 = 0x0000000a, | | CSAID_LAYER2 = 0x0000000a, | |
| CSAID_LAYER3 = 0x0000000b, | | CSAID_LAYER3 = 0x0000000b, | |
| CSAID_LAYER4 = 0x0000000c, | | CSAID_LAYER4 = 0x0000000c, | |
| CSAID_LAYER5 = 0x0000000d, | | CSAID_LAYER5 = 0x0000000d, | |
| CSAID_LAYER6 = 0x0000000e, | | CSAID_LAYER6 = 0x0000000e, | |
| CSAID_LAYER7 = 0x0000000f, | | CSAID_LAYER7 = 0x0000000f, | |
|
| | | CSAID_LAYER8 = 0x00000010, | |
| | | CSAID_LAYER9 = 0x00000011, | |
| | | CSAID_LAYER10 = 0x00000012, | |
| | | CSAID_LAYER11 = 0x00000013, | |
| | | CSAID_LAYER12 = 0x00000014, | |
| | | CSAID_LAYER13 = 0x00000015, | |
| | | CSAID_LAYER14 = 0x00000016, | |
| | | CSAID_LAYER15 = 0x00000017, | |
| | | | |
|
| _CSAID_NUM = 0x00000010, /* number of statically assigned ID
s for usage in static arrays */ | | _CSAID_NUM = 0x00000018, /* number of statically assigned ID
s for usage in static arrays */ | |
| | | | |
| CSAID_ANY = 0x00000100, /* any other accessor needs to be r
egistered using IDs starting from here */ | | CSAID_ANY = 0x00000100, /* any other accessor needs to be r
egistered using IDs starting from here */ | |
| } CoreSurfaceAccessorID; | | } CoreSurfaceAccessorID; | |
| | | | |
| typedef enum { | | typedef enum { | |
| CSBR_FRONT = 0, | | CSBR_FRONT = 0, | |
| CSBR_BACK = 1, | | CSBR_BACK = 1, | |
| CSBR_IDLE = 2 | | CSBR_IDLE = 2 | |
| } CoreSurfaceBufferRole; | | } CoreSurfaceBufferRole; | |
| | | | |
| | | | |
| skipping to change at line 210 | | skipping to change at line 218 | |
| int num_buffers; | | int num_buffers; | |
| | | | |
| int buffer_indices[MAX_SURFACE_BUFFERS]; | | int buffer_indices[MAX_SURFACE_BUFFERS]; | |
| | | | |
| unsigned int flips; | | unsigned int flips; | |
| | | | |
| CorePalette *palette; | | CorePalette *palette; | |
| GlobalReaction palette_reaction; | | GlobalReaction palette_reaction; | |
| | | | |
| FusionSHMPoolShared *shmpool; | | FusionSHMPoolShared *shmpool; | |
|
| | | | |
| | | void *data; /* Shared system driver-specifi | |
| | | c data for this surface. */ | |
| }; | | }; | |
| | | | |
| /* | | /* | |
| * Creates a pool of surface objects. | | * Creates a pool of surface objects. | |
| */ | | */ | |
| FusionObjectPool *dfb_surface_pool_create( const FusionWorld *world ); | | FusionObjectPool *dfb_surface_pool_create( const FusionWorld *world ); | |
| | | | |
| /* | | /* | |
| * Generates dfb_surface_ref(), dfb_surface_attach() etc. | | * Generates dfb_surface_ref(), dfb_surface_attach() etc. | |
| */ | | */ | |
| | | | |
End of changes. 5 change blocks. |
| 3 lines changed or deleted | | 14 lines changed or added | |
|
| system.h | | system.h | |
| /* | | /* | |
|
| (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (
directfb.org) | | (c) Copyright 2001-2010 The world wide DirectFB Open Source Community (
directfb.org) | |
| (c) Copyright 2000-2004 Convergence (integrated media) GmbH | | (c) Copyright 2000-2004 Convergence (integrated media) GmbH | |
| | | | |
| All rights reserved. | | All rights reserved. | |
| | | | |
| Written by Denis Oliver Kropp <dok@directfb.org>, | | Written by Denis Oliver Kropp <dok@directfb.org>, | |
| Andreas Hundt <andi@fischlustig.de>, | | Andreas Hundt <andi@fischlustig.de>, | |
| Sven Neumann <neo@directfb.org>, | | Sven Neumann <neo@directfb.org>, | |
| Ville Syrjälä <syrjala@sci.fi> and | | Ville Syrjälä <syrjala@sci.fi> and | |
| Claudio Ciccani <klan@users.sf.net>. | | Claudio Ciccani <klan@users.sf.net>. | |
| | | | |
| | | | |
| skipping to change at line 191 | | skipping to change at line 191 | |
| unsigned int (*VideoRamLength)( void ); | | unsigned int (*VideoRamLength)( void ); | |
| | | | |
| unsigned long (*AuxMemoryPhysical)( unsigned int offset ); | | unsigned long (*AuxMemoryPhysical)( unsigned int offset ); | |
| void* (*AuxMemoryVirtual)( unsigned int offset ); | | void* (*AuxMemoryVirtual)( unsigned int offset ); | |
| | | | |
| unsigned int (*AuxRamLength)( void ); | | unsigned int (*AuxRamLength)( void ); | |
| | | | |
| void (*GetBusID)( int *ret_bus, int *ret_dev, int *ret_func
); | | void (*GetBusID)( int *ret_bus, int *ret_dev, int *ret_func
); | |
| void (*GetDeviceID)( unsigned int *ret_vendor_id, | | void (*GetDeviceID)( unsigned int *ret_vendor_id, | |
| unsigned int *ret_device_id ); | | unsigned int *ret_device_id ); | |
|
| | | | |
| | | /* | |
| | | * Shared Surface Data Creation/Destruction Functions | |
| | | * | |
| | | * These functions are used to create and destroy the shared CoreSurfa | |
| | | ce | |
| | | * data. The Init function is called before the surface's buffers are | |
| | | * created. The Destroy function is called after the surface buffers | |
| | | are | |
| | | * released. The allocated data is only used by the systems driver. | |
| | | * | |
| | | * Note: In the init and destroy functions it is legal for the data | |
| | | * parameter to be null. | |
| | | */ | |
| | | int (*SurfaceDataSize)( void ); | |
| | | void (*SurfaceDataInit)( CoreSurface *surface, void *data ); | |
| | | void (*SurfaceDataDestroy)( CoreSurface *surface, void *data | |
| | | ); | |
| } CoreSystemFuncs; | | } CoreSystemFuncs; | |
| | | | |
| DFBResult | | DFBResult | |
| dfb_system_lookup( void ); | | dfb_system_lookup( void ); | |
| | | | |
| CoreSystemType | | CoreSystemType | |
| dfb_system_type( void ); | | dfb_system_type( void ); | |
| | | | |
| CoreSystemCapabilities | | CoreSystemCapabilities | |
| dfb_system_caps( void ); | | dfb_system_caps( void ); | |
| | | | |
| skipping to change at line 254 | | skipping to change at line 269 | |
| unsigned int | | unsigned int | |
| dfb_system_auxram_length( void ); | | dfb_system_auxram_length( void ); | |
| | | | |
| void | | void | |
| dfb_system_get_busid( int *ret_bus, int *ret_dev, int *ret_func ); | | dfb_system_get_busid( int *ret_bus, int *ret_dev, int *ret_func ); | |
| | | | |
| void | | void | |
| dfb_system_get_deviceid( unsigned int *ret_vendor_id, | | dfb_system_get_deviceid( unsigned int *ret_vendor_id, | |
| unsigned int *ret_device_id ); | | unsigned int *ret_device_id ); | |
| | | | |
|
| | | int | |
| | | dfb_system_surface_data_size( void ); | |
| | | | |
| | | void | |
| | | dfb_system_surface_data_init( CoreSurface *surface, void *data ); | |
| | | | |
| | | void | |
| | | dfb_system_surface_data_destroy( CoreSurface *surface, void *data ); | |
| | | | |
| #endif | | #endif | |
| | | | |
End of changes. 3 change blocks. |
| 1 lines changed or deleted | | 28 lines changed or added | |
|
| util.h | | util.h | |
| | | | |
| skipping to change at line 36 | | skipping to change at line 36 | |
| Boston, MA 02111-1307, USA. | | Boston, MA 02111-1307, USA. | |
| */ | | */ | |
| | | | |
| #ifndef __GFX__UTIL_H__ | | #ifndef __GFX__UTIL_H__ | |
| #define __GFX__UTIL_H__ | | #define __GFX__UTIL_H__ | |
| | | | |
| #include <core/surface.h> | | #include <core/surface.h> | |
| | | | |
| void dfb_gfx_copy( CoreSurface *source, CoreSurface *destination, const DFB
Rectangle *rect ); | | void dfb_gfx_copy( CoreSurface *source, CoreSurface *destination, const DFB
Rectangle *rect ); | |
| void dfb_gfx_copy_to( CoreSurface *source, CoreSurface *destination, const
DFBRectangle *rect, int x, int y, bool from_back ); | | void dfb_gfx_copy_to( CoreSurface *source, CoreSurface *destination, const
DFBRectangle *rect, int x, int y, bool from_back ); | |
|
| | | void dfb_gfx_stretch_to( CoreSurface *source, CoreSurface *destination, con
st DFBRectangle *srect, const DFBRectangle *drect, bool from_back ); | |
| void dfb_back_to_front_copy( CoreSurface *surface, const DFBRegion *region
); | | void dfb_back_to_front_copy( CoreSurface *surface, const DFBRegion *region
); | |
| void dfb_back_to_front_copy_rotation( CoreSurface *surface, const DFBRegion
*region, int rotation ); | | void dfb_back_to_front_copy_rotation( CoreSurface *surface, const DFBRegion
*region, int rotation ); | |
| void dfb_clear_depth( CoreSurface *surface, const DFBRegion *region ); | | void dfb_clear_depth( CoreSurface *surface, const DFBRegion *region ); | |
| | | | |
| void dfb_sort_triangle( DFBTriangle *tri ); | | void dfb_sort_triangle( DFBTriangle *tri ); | |
| | | | |
| void dfb_gfx_copy_regions( CoreSurface *source, | | void dfb_gfx_copy_regions( CoreSurface *source, | |
| CoreSurfaceBufferRole from, | | CoreSurfaceBufferRole from, | |
| CoreSurface *destination, | | CoreSurface *destination, | |
| CoreSurfaceBufferRole to, | | CoreSurfaceBufferRole to, | |
| | | | |
End of changes. 1 change blocks. |
| 0 lines changed or deleted | | 1 lines changed or added | |
|