static DFBResult IDirectFBVideoProvider_Xine_DetachEventBuffer( IDirectFBVideoProvider *thiz, IDirectFBEventBuffer *events ) { DIRECT_INTERFACE_GET_DATA( IDirectFBVideoProvider_Xine ) pthread_mutex_lock( &data->lock ); if (!data->events) { pthread_mutex_unlock( &data->lock ); return DFB_BUFFEREMPTY; } if (data->events != events) { pthread_mutex_unlock( &data->lock ); return DFB_INVARG; } data->events = NULL; events->Release( events ); pthread_mutex_unlock( &data->lock ); return DFB_OK; }
static DFBResult IDirectFBWindow_Resize( IDirectFBWindow *thiz, int width, int height ) { DFBResult ret; DFBInsets insets; DIRECT_INTERFACE_GET_DATA(IDirectFBWindow) D_DEBUG_AT( IDirectFB_Window, "%s()\n", __FUNCTION__ ); if (data->destroyed) return DFB_DESTROYED; if (width < 1 || width > 4096 || height < 1 || height > 4096) return DFB_INVARG; dfb_windowstack_lock( data->window->stack ); dfb_wm_get_insets( data->window->stack, data->window, &insets ); width += insets.l+insets.r; height += insets.t+insets.b; ret = dfb_window_resize( data->window, width, height ); dfb_windowstack_unlock( data->window->stack ); return ret; }
static DFBResult IDirectFBWindow_PutBelow( IDirectFBWindow *thiz, IDirectFBWindow *upper ) { IDirectFBWindow_data *upper_data; DIRECT_INTERFACE_GET_DATA(IDirectFBWindow) D_DEBUG_AT( IDirectFB_Window, "%s()\n", __FUNCTION__ ); if (data->destroyed) return DFB_DESTROYED; if (!upper) return DFB_INVARG; upper_data = (IDirectFBWindow_data*) upper->priv; if (!upper_data) return DFB_DEAD; if (!upper_data->window) return DFB_DESTROYED; return dfb_window_putbelow( data->window, upper_data->window ); }
static DFBResult IDirectFBWindow_SetKeySelection( IDirectFBWindow *thiz, DFBWindowKeySelection selection, const DFBInputDeviceKeySymbol *keys, unsigned int num_keys ) { DIRECT_INTERFACE_GET_DATA(IDirectFBWindow) D_DEBUG_AT( IDirectFB_Window, "%s()\n", __FUNCTION__ ); /* What a lovely switch */ switch (selection) { case DWKS_ALL: case DWKS_NONE: break; case DWKS_LIST: if (!keys || num_keys == 0) default: return DFB_INVARG; } if (data->destroyed) return DFB_DESTROYED; return dfb_window_set_key_selection( data->window, selection, keys, num_keys ); }
static DFBResult IDirectFBWindow_SetColorKey( IDirectFBWindow *thiz, u8 r, u8 g, u8 b ) { u32 key; CoreSurface *surface; DIRECT_INTERFACE_GET_DATA(IDirectFBWindow) D_DEBUG_AT( IDirectFB_Window, "%s()\n", __FUNCTION__ ); if (data->destroyed) return DFB_DESTROYED; if (data->window->caps & DWCAPS_INPUTONLY) return DFB_UNSUPPORTED; surface = data->window->surface; if (DFB_PIXELFORMAT_IS_INDEXED( surface->config.format )) key = dfb_palette_search( surface->palette, r, g, b, 0x80 ); else key = dfb_color_to_pixel( surface->config.format, r, g, b ); return dfb_window_set_colorkey( data->window, key ); }
static DFBResult IDirectFBWindow_CreateEventBuffer( IDirectFBWindow *thiz, IDirectFBEventBuffer **buffer ) { IDirectFBEventBuffer *b; DIRECT_INTERFACE_GET_DATA(IDirectFBWindow) D_DEBUG_AT( IDirectFB_Window, "%s()\n", __FUNCTION__ ); if (data->destroyed) return DFB_DESTROYED; DIRECT_ALLOCATE_INTERFACE( b, IDirectFBEventBuffer ); IDirectFBEventBuffer_Construct( b, NULL, NULL ); IDirectFBEventBuffer_AttachWindow( b, data->window ); dfb_window_send_configuration( data->window ); *buffer = b; return DFB_OK; }
static DFBResult IDirectFBWindow_GetPosition( IDirectFBWindow *thiz, int *x, int *y ) { DFBInsets insets; DIRECT_INTERFACE_GET_DATA(IDirectFBWindow) D_DEBUG_AT( IDirectFB_Window, "%s()\n", __FUNCTION__ ); if (data->destroyed) return DFB_DESTROYED; if (!x && !y) return DFB_INVARG; CoreWindow_GetInsets( data->window, &insets ); if (x) *x = data->window->config.bounds.x-insets.l; if (y) *y = data->window->config.bounds.y-insets.t; return DFB_OK; }
static DFBResult IDirectFBWindow_GetProperty( IDirectFBWindow *thiz, const char *key, void **ret_value ) { DFBResult ret; DIRECT_INTERFACE_GET_DATA(IDirectFBWindow) D_DEBUG_AT( IDirectFB_Window, "%s()\n", __FUNCTION__ ); if (data->destroyed) return DFB_DESTROYED; if (!key) return DFB_INVARG; if (!ret_value) return DFB_INVARG; dfb_windowstack_lock( data->window->stack ); ret = dfb_wm_get_window_property( data->window->stack, data->window, key, ret_value ); dfb_windowstack_unlock( data->window->stack ); return ret; }
static DFBResult IDirectFBWindow_GetSize( IDirectFBWindow *thiz, int *width, int *height ) { DFBInsets insets; DIRECT_INTERFACE_GET_DATA(IDirectFBWindow) D_DEBUG_AT( IDirectFB_Window, "%s()\n", __FUNCTION__ ); if (data->destroyed) return DFB_DESTROYED; if (!width && !height) return DFB_INVARG; CoreWindow_GetInsets( data->window, &insets ); if (width) *width = data->window->config.bounds.w-insets.l-insets.r; if (height) *height = data->window->config.bounds.h-insets.t-insets.b; return DFB_OK; }
static DFBResult IDirectFBSurface_Layer_GetSubSurface( IDirectFBSurface *thiz, const DFBRectangle *rect, IDirectFBSurface **surface ) { DFBResult ret; DIRECT_INTERFACE_GET_DATA(IDirectFBSurface_Layer) D_DEBUG_AT( Surface, "%s( %p )\n", __FUNCTION__, thiz ); /* Check arguments */ if (!data->base.surface) return DFB_DESTROYED; if (!surface) return DFB_INVARG; /* Allocate interface */ DIRECT_ALLOCATE_INTERFACE( *surface, IDirectFBSurface ); if (rect || data->base.limit_set) { DFBRectangle wanted, granted; /* Compute wanted rectangle */ if (rect) { wanted = *rect; wanted.x += data->base.area.wanted.x; wanted.y += data->base.area.wanted.y; if (wanted.w <= 0 || wanted.h <= 0) { wanted.w = 0; wanted.h = 0; } } else { wanted = data->base.area.wanted; } /* Compute granted rectangle */ granted = wanted; dfb_rectangle_intersect( &granted, &data->base.area.granted ); /* Construct */ ret = IDirectFBSurface_Layer_Construct( *surface, thiz, &wanted, &granted, data->region, data->base.caps | DSCAPS_SUBSURFACE, data->base.core ); } else { /* Construct */ ret = IDirectFBSurface_Layer_Construct( *surface, thiz, NULL, NULL, data->region, data->base.caps | DSCAPS_SUBSURFACE, data->base.core ); } return ret; }
static DFBResult IDirectFBVideoProvider_V4L_AddRef( IDirectFBVideoProvider *thiz ) { DIRECT_INTERFACE_GET_DATA (IDirectFBVideoProvider_V4L) data->ref++; return DFB_OK; }
/* * Get the extents of the specified glyph. */ static DFBResult IDirectFBFont_GetGlyphExtentsXY( IDirectFBFont *thiz, unsigned int character, DFBRectangle *rect, int *xadvance, int *yadvance ) { DFBResult ret; CoreFont *font; CoreGlyphData *glyph; unsigned int index; DIRECT_INTERFACE_GET_DATA(IDirectFBFont) D_DEBUG_AT( Font, "%s( %p )\n", __FUNCTION__, thiz ); if (!rect && !xadvance && !yadvance) return DFB_INVARG; font = data->font; dfb_font_lock( font ); ret = dfb_font_decode_character( font, data->encoding, character, &index ); if (ret) { dfb_font_unlock( font ); return ret; } if (dfb_font_get_glyph_data (font, index, 0, &glyph) != DFB_OK) { // FIXME: support font layers if (rect) rect->x = rect->y = rect->w = rect->h = 0; if (xadvance) *xadvance = 0; if (yadvance) *yadvance = 0; } else { if (rect) { rect->x = glyph->left + font->ascender * font->up_unit_x; rect->y = glyph->top + font->ascender * font->up_unit_y; rect->w = glyph->width; rect->h = glyph->height; } if (xadvance) *xadvance = glyph->xadvance; if (yadvance) *yadvance = glyph->yadvance; } dfb_font_unlock( font ); return DFB_OK; }
static DirectResult IDirectFBGL_AddRef( IDirectFBGL *thiz ) { DIRECT_INTERFACE_GET_DATA (IDirectFBGL); data->ref++; return DFB_OK; }
static DirectResult IDirectFBDataBuffer_Dispatcher_AddRef( IDirectFBDataBuffer *thiz ) { DIRECT_INTERFACE_GET_DATA(IDirectFBDataBuffer_Dispatcher) data->base.ref++; return DFB_OK; }
static DirectResult IDirectFBVideoProvider_Swf_AddRef(IDirectFBVideoProvider *thiz ) { DIRECT_INTERFACE_GET_DATA(IDirectFBVideoProvider_Swf) data->ref++; return DR_OK; }
static DirectResult IComaComponent_AddRef( IComaComponent *thiz ) { DIRECT_INTERFACE_GET_DATA (IComaComponent) data->ref++; return DR_OK; }
static DFBResult IDirectFBFont_Requestor_AddRef( IDirectFBFont *thiz ) { DIRECT_INTERFACE_GET_DATA(IDirectFBFont_Requestor) data->ref++; return DFB_OK; }
static DFBResult IDirectFBPalette_Dispatcher_AddRef( IDirectFBPalette *thiz ) { DIRECT_INTERFACE_GET_DATA(IDirectFBPalette_Dispatcher) data->ref++; return DFB_OK; }
static DFBResult IDirectFBEventBuffer_Dispatcher_AddRef( IDirectFBEventBuffer *thiz ) { DIRECT_INTERFACE_GET_DATA(IDirectFBEventBuffer_Dispatcher) data->ref++; return DFB_OK; }
static DFBResult IDirectFBImageProvider_PNG_AddRef( IDirectFBImageProvider *thiz ) { DIRECT_INTERFACE_GET_DATA (IDirectFBImageProvider_PNG) data->ref++; return DFB_OK; }
static DirectResult IDirectFBEventBuffer_Requestor_AddRef( IDirectFBEventBuffer *thiz ) { DIRECT_INTERFACE_GET_DATA(IDirectFBEventBuffer_Requestor) data->ref++; return DFB_OK; }
static DirectResult IDirectFBDataBuffer_Requestor_AddRef( IDirectFBDataBuffer *thiz ) { DIRECT_INTERFACE_GET_DATA(IDirectFBDataBuffer_Requestor) data->base.ref++; return DR_OK; }
static DirectResult IDirectFBWindows_Requestor_AddRef( IDirectFBWindows *thiz ) { DIRECT_INTERFACE_GET_DATA(IDirectFBWindows_Requestor) data->ref++; return DFB_OK; }
static DFBResult IDirectFBFont_Dispose( IDirectFBFont *thiz ) { DIRECT_INTERFACE_GET_DATA(IDirectFBFont) D_DEBUG_AT( Font, "%s( %p )\n", __FUNCTION__, thiz ); return dfb_font_dispose( data->font ); }
static DirectResult IDirectFBDisplayLayer_Dispatcher_AddRef( IDirectFBDisplayLayer *thiz ) { DIRECT_INTERFACE_GET_DATA(IDirectFBDisplayLayer_Dispatcher) data->ref++; return DFB_OK; }
static DirectResult IDirectFBScreen_AddRef( IDirectFBScreen *thiz ) { DIRECT_INTERFACE_GET_DATA(IDirectFBScreen) data->ref++; return DFB_OK; }
static DirectResult IDirectFBInputDevice_Dispatcher_AddRef( IDirectFBInputDevice *thiz ) { DIRECT_INTERFACE_GET_DATA(IDirectFBInputDevice_Dispatcher) data->ref++; return DFB_OK; }
static DirectResult IFusionDale_AddRef( IFusionDale *thiz ) { DIRECT_INTERFACE_GET_DATA (IFusionDale); data->ref++; return DR_OK; }
static DirectResult IFusionSound_Requestor_AddRef( IFusionSound *thiz ) { DIRECT_INTERFACE_GET_DATA(IFusionSound_Requestor) data->ref++; return DR_OK; }
static DirectResult IFusionDaleMessenger_AddRef( IFusionDaleMessenger *thiz ) { DIRECT_INTERFACE_GET_DATA (IFusionDaleMessenger) data->ref++; return DR_OK; }