Example #1
0
static DFBResult
__CoreLayerRegionDispatch__Dispatch( CoreLayerRegion *obj,
                                FusionID      caller,
                                int           method,
                                void         *ptr,
                                unsigned int  length,
                                void         *ret_ptr,
                                unsigned int  ret_size,
                                unsigned int *ret_length )
{
    D_UNUSED
    DFBResult ret;


    DirectFB::ILayerRegion_Real real( core_dfb, obj );


    switch (method) {
        case CoreLayerRegion_GetSurface: {
    CoreSurface *surface = NULL;
            D_UNUSED
            CoreLayerRegionGetSurface       *args        = (CoreLayerRegionGetSurface *) ptr;
            CoreLayerRegionGetSurfaceReturn *return_args = (CoreLayerRegionGetSurfaceReturn *) ret_ptr;

            D_DEBUG_AT( DirectFB_CoreLayerRegion, "=-> CoreLayerRegion_GetSurface\n" );

            return_args->result = real.GetSurface( &surface );
            if (return_args->result == DFB_OK) {
                CoreSurface_Throw( surface, caller, &return_args->surface_id );
                return_args->surface_ptr = (void*) surface;
            }

            *ret_length = sizeof(CoreLayerRegionGetSurfaceReturn);

            return DFB_OK;
        }

        case CoreLayerRegion_FlipUpdate: {
            D_UNUSED
            CoreLayerRegionFlipUpdate       *args        = (CoreLayerRegionFlipUpdate *) ptr;
            CoreLayerRegionFlipUpdateReturn *return_args = (CoreLayerRegionFlipUpdateReturn *) ret_ptr;

            D_DEBUG_AT( DirectFB_CoreLayerRegion, "=-> CoreLayerRegion_FlipUpdate\n" );

            return_args->result = real.FlipUpdate( args->update_set ? &args->update : NULL, args->flags );
            if (return_args->result == DFB_OK) {
            }

            *ret_length = sizeof(CoreLayerRegionFlipUpdateReturn);

            return DFB_OK;
        }

        case CoreLayerRegion_FlipUpdateStereo: {
            D_UNUSED
            CoreLayerRegionFlipUpdateStereo       *args        = (CoreLayerRegionFlipUpdateStereo *) ptr;
            CoreLayerRegionFlipUpdateStereoReturn *return_args = (CoreLayerRegionFlipUpdateStereoReturn *) ret_ptr;

            D_DEBUG_AT( DirectFB_CoreLayerRegion, "=-> CoreLayerRegion_FlipUpdateStereo\n" );

            return_args->result = real.FlipUpdateStereo( args->left_set ? &args->left : NULL, args->right_set ? &args->right : NULL, args->flags );
            if (return_args->result == DFB_OK) {
            }

            *ret_length = sizeof(CoreLayerRegionFlipUpdateStereoReturn);

            return DFB_OK;
        }

        case CoreLayerRegion_FlipUpdate2: {
            D_UNUSED
            CoreLayerRegionFlipUpdate2       *args        = (CoreLayerRegionFlipUpdate2 *) ptr;
            CoreLayerRegionFlipUpdate2Return *return_args = (CoreLayerRegionFlipUpdate2Return *) ret_ptr;

            D_DEBUG_AT( DirectFB_CoreLayerRegion, "=-> CoreLayerRegion_FlipUpdate2\n" );

            return_args->result = real.FlipUpdate2( args->left_update_set ? &args->left_update : NULL, args->right_update_set ? &args->right_update : NULL, args->flags, args->pts );
            if (return_args->result == DFB_OK) {
            }

            *ret_length = sizeof(CoreLayerRegionFlipUpdate2Return);

            return DFB_OK;
        }

    }

    return DFB_NOSUCHMETHOD;
}
Example #2
0
static DFBResult
__CoreDFBDispatch__Dispatch( CoreDFB *obj,
                                FusionID      caller,
                                int           method,
                                void         *ptr,
                                unsigned int  length,
                                void         *ret_ptr,
                                unsigned int  ret_size,
                                unsigned int *ret_length )
{
    D_UNUSED
    DFBResult ret;


    DirectFB::ICore_Real real( core_dfb, obj );


    switch (method) {
        case CoreDFB_Initialize: {
            D_UNUSED
            CoreDFBInitialize       *args        = (CoreDFBInitialize *) ptr;
            CoreDFBInitializeReturn *return_args = (CoreDFBInitializeReturn *) ret_ptr;

            D_DEBUG_AT( DirectFB_CoreDFB, "=-> CoreDFB_Initialize\n" );

            return_args->result = real.Initialize(  );
            if (return_args->result == DFB_OK) {
            }

            *ret_length = sizeof(CoreDFBInitializeReturn);

            return DFB_OK;
        }

        case CoreDFB_Register: {
            D_UNUSED
            CoreDFBRegister       *args        = (CoreDFBRegister *) ptr;
            CoreDFBRegisterReturn *return_args = (CoreDFBRegisterReturn *) ret_ptr;

            D_DEBUG_AT( DirectFB_CoreDFB, "=-> CoreDFB_Register\n" );

            return_args->result = real.Register( args->slave_call );
            if (return_args->result == DFB_OK) {
            }

            *ret_length = sizeof(CoreDFBRegisterReturn);

            return DFB_OK;
        }

        case CoreDFB_CreateSurface: {
    CorePalette *palette = NULL;
    CoreSurface *surface = NULL;
            D_UNUSED
            CoreDFBCreateSurface       *args        = (CoreDFBCreateSurface *) ptr;
            CoreDFBCreateSurfaceReturn *return_args = (CoreDFBCreateSurfaceReturn *) ret_ptr;

            D_DEBUG_AT( DirectFB_CoreDFB, "=-> CoreDFB_CreateSurface\n" );

            if (args->palette_set) {
                ret = (DFBResult) CorePalette_Lookup( core_dfb, args->palette_id, caller, &palette );
                if (ret) {
                     D_DERROR( ret, "%s: Looking up palette by ID %u failed!\n", __FUNCTION__, args->palette_id );
                     return_args->result = ret;
                     return ret;
                }
            }

            return_args->result = real.CreateSurface( &args->config, args->type, args->resource_id, args->palette_set ? palette : NULL, &surface );
            if (return_args->result == DFB_OK) {
                CoreSurface_Throw( surface, caller, &return_args->surface_id );
                return_args->surface_ptr = (void*) surface;
            }

            *ret_length = sizeof(CoreDFBCreateSurfaceReturn);

            if (palette)
                CorePalette_Unref( palette );

            return DFB_OK;
        }

        case CoreDFB_CreatePalette: {
    CorePalette *palette = NULL;
            D_UNUSED
            CoreDFBCreatePalette       *args        = (CoreDFBCreatePalette *) ptr;
            CoreDFBCreatePaletteReturn *return_args = (CoreDFBCreatePaletteReturn *) ret_ptr;

            D_DEBUG_AT( DirectFB_CoreDFB, "=-> CoreDFB_CreatePalette\n" );

            return_args->result = real.CreatePalette( args->size, &palette );
            if (return_args->result == DFB_OK) {
                CorePalette_Throw( palette, caller, &return_args->palette_id );
                return_args->palette_ptr = (void*) palette;
            }

            *ret_length = sizeof(CoreDFBCreatePaletteReturn);

            return DFB_OK;
        }

        case CoreDFB_CreateState: {
    CoreGraphicsState *state = NULL;
            D_UNUSED
            CoreDFBCreateState       *args        = (CoreDFBCreateState *) ptr;
            CoreDFBCreateStateReturn *return_args = (CoreDFBCreateStateReturn *) ret_ptr;

            D_DEBUG_AT( DirectFB_CoreDFB, "=-> CoreDFB_CreateState\n" );

            return_args->result = real.CreateState( &state );
            if (return_args->result == DFB_OK) {
                CoreGraphicsState_Throw( state, caller, &return_args->state_id );
                return_args->state_ptr = (void*) state;
            }

            *ret_length = sizeof(CoreDFBCreateStateReturn);

            return DFB_OK;
        }

        case CoreDFB_WaitIdle: {
            D_UNUSED
            CoreDFBWaitIdle       *args        = (CoreDFBWaitIdle *) ptr;
            CoreDFBWaitIdleReturn *return_args = (CoreDFBWaitIdleReturn *) ret_ptr;

            D_DEBUG_AT( DirectFB_CoreDFB, "=-> CoreDFB_WaitIdle\n" );

            return_args->result = real.WaitIdle(  );
            if (return_args->result == DFB_OK) {
            }

            *ret_length = sizeof(CoreDFBWaitIdleReturn);

            return DFB_OK;
        }

        case CoreDFB_CreateImageProvider: {
            D_UNUSED
            CoreDFBCreateImageProvider       *args        = (CoreDFBCreateImageProvider *) ptr;
            CoreDFBCreateImageProviderReturn *return_args = (CoreDFBCreateImageProviderReturn *) ret_ptr;

            D_DEBUG_AT( DirectFB_CoreDFB, "=-> CoreDFB_CreateImageProvider\n" );

            return_args->result = real.CreateImageProvider( args->buffer_call, &return_args->call );
            if (return_args->result == DFB_OK) {
            }

            *ret_length = sizeof(CoreDFBCreateImageProviderReturn);

            return DFB_OK;
        }

        case CoreDFB_AllowSurface: {
    CoreSurface *surface = NULL;
            D_UNUSED
            CoreDFBAllowSurface       *args        = (CoreDFBAllowSurface *) ptr;
            CoreDFBAllowSurfaceReturn *return_args = (CoreDFBAllowSurfaceReturn *) ret_ptr;

            D_DEBUG_AT( DirectFB_CoreDFB, "=-> CoreDFB_AllowSurface\n" );

            ret = (DFBResult) CoreSurface_Lookup( core_dfb, args->surface_id, caller, &surface );
            if (ret) {
                 D_DERROR( ret, "%s: Looking up surface by ID %u failed!\n", __FUNCTION__, args->surface_id );
                 return_args->result = ret;
                 return ret;
            }

            return_args->result = real.AllowSurface( surface, (char*) ((char*)(args + 1)), args->executable_length );
            if (return_args->result == DFB_OK) {
            }

            *ret_length = sizeof(CoreDFBAllowSurfaceReturn);

            if (surface)
                CoreSurface_Unref( surface );

            return DFB_OK;
        }

        case CoreDFB_GetSurface: {
    CoreSurface *surface = NULL;
            D_UNUSED
            CoreDFBGetSurface       *args        = (CoreDFBGetSurface *) ptr;
            CoreDFBGetSurfaceReturn *return_args = (CoreDFBGetSurfaceReturn *) ret_ptr;

            D_DEBUG_AT( DirectFB_CoreDFB, "=-> CoreDFB_GetSurface\n" );

            return_args->result = real.GetSurface( args->surface_id, &surface );
            if (return_args->result == DFB_OK) {
                CoreSurface_Throw( surface, caller, &return_args->surface_id );
                return_args->surface_ptr = (void*) surface;
            }

            *ret_length = sizeof(CoreDFBGetSurfaceReturn);

            return DFB_OK;
        }

        case CoreDFB_ClipboardSet: {
            D_UNUSED
            CoreDFBClipboardSet       *args        = (CoreDFBClipboardSet *) ptr;
            CoreDFBClipboardSetReturn *return_args = (CoreDFBClipboardSetReturn *) ret_ptr;

            D_DEBUG_AT( DirectFB_CoreDFB, "=-> CoreDFB_ClipboardSet\n" );

            return_args->result = real.ClipboardSet( (char*) ((char*)(args + 1)), args->mime_type_size, (char*) ((char*)(args + 1) + args->mime_type_size * sizeof(char)), args->data_size, args->timestamp_us );
            if (return_args->result == DFB_OK) {
            }

            *ret_length = sizeof(CoreDFBClipboardSetReturn);

            return DFB_OK;
        }

        case CoreDFB_ClipboardGet: {
    char  tmp_data[MAX_CLIPBOARD_DATA_SIZE];
            D_UNUSED
            CoreDFBClipboardGet       *args        = (CoreDFBClipboardGet *) ptr;
            CoreDFBClipboardGetReturn *return_args = (CoreDFBClipboardGetReturn *) ret_ptr;

            D_DEBUG_AT( DirectFB_CoreDFB, "=-> CoreDFB_ClipboardGet\n" );

            return_args->result = real.ClipboardGet( (char*) ((char*)(return_args + 1)), &return_args->mime_type_size, tmp_data, &return_args->data_size );
            if (return_args->result == DFB_OK) {
                direct_memcpy( (char*) ((char*)(return_args + 1) + return_args->mime_type_size * sizeof(char)), tmp_data, return_args->data_size );
            }

            *ret_length = sizeof(CoreDFBClipboardGetReturn) + return_args->mime_type_size * sizeof(char) + return_args->data_size * sizeof(char);

            return DFB_OK;
        }

        case CoreDFB_ClipboardGetTimestamp: {
            D_UNUSED
            CoreDFBClipboardGetTimestamp       *args        = (CoreDFBClipboardGetTimestamp *) ptr;
            CoreDFBClipboardGetTimestampReturn *return_args = (CoreDFBClipboardGetTimestampReturn *) ret_ptr;

            D_DEBUG_AT( DirectFB_CoreDFB, "=-> CoreDFB_ClipboardGetTimestamp\n" );

            return_args->result = real.ClipboardGetTimestamp( &return_args->timestamp_us );
            if (return_args->result == DFB_OK) {
            }

            *ret_length = sizeof(CoreDFBClipboardGetTimestampReturn);

            return DFB_OK;
        }

    }

    return DFB_NOSUCHMETHOD;
}