DFBResult IWindowStack_Real::CursorSetShape( CoreSurface *shape, const DFBPoint *hotspot ) { D_DEBUG_AT( DirectFB_CoreWindowStack, "IWindowStack_Real::%s()\n", __FUNCTION__ ); return dfb_windowstack_cursor_set_shape( obj, shape, hotspot->x, hotspot->y ); }
static DFBResult IDirectFBWindow_SetCursorShape( IDirectFBWindow *thiz, IDirectFBSurface *shape, int hot_x, int hot_y ) { DFBResult ret; DIRECT_INTERFACE_GET_DATA(IDirectFBWindow) D_DEBUG_AT( IDirectFB_Window, "%s()\n", __FUNCTION__ ); if (data->destroyed) return DFB_DESTROYED; if (data->cursor.shape) { data->cursor.shape->Release( data->cursor.shape ); data->cursor.shape = NULL; } if (shape) { IDirectFBSurface_data *shape_data; CoreSurface *shape_surface; shape_data = (IDirectFBSurface_data*) shape->priv; if (!shape_data) return DFB_DEAD; shape_surface = shape_data->surface; if (!shape_surface) return DFB_DESTROYED; ret = shape->AddRef( shape ); if (ret) return ret; data->cursor.shape = shape; data->cursor.hot_x = hot_x; data->cursor.hot_y = hot_y; if (data->entered) return dfb_windowstack_cursor_set_shape( data->window->stack, shape_surface, hot_x, hot_y ); } return DFB_OK; }