21#include "../../SDL_internal.h"
23#if SDL_VIDEO_DRIVER_DIRECTFB
32#include "../SDL_sysvideo.h"
33#include "../../events/SDL_mouse_c.h"
35static SDL_Cursor *DirectFB_CreateDefaultCursor(
void);
37 int hot_x,
int hot_y);
42static const char *
arrow[] = {
79DirectFB_CreateDefaultCursor(
void)
84 DFB_CursorData *curdata;
85 DFBSurfaceDescription dsc;
94 DSDESC_WIDTH | DSDESC_HEIGHT | DSDESC_PIXELFORMAT | DSDESC_CAPS;
95 dsc.caps = DSCAPS_VIDEOONLY;
98 dsc.pixelformat = DSPF_ARGB;
107 (
void *) &dest, &pitch));
110 for (
i = 0;
i < 32;
i++)
112 for (
j = 0;
j < 32;
j++)
116 case ' ': dest[
j] = 0x00000000;
break;
117 case '.': dest[
j] = 0xffffffff;
break;
118 case 'X': dest[
j] = 0xff000000;
break;
121 dest += (pitch >> 2);
124 curdata->surf->Unlock(curdata->surf);
137 DFB_CursorData *curdata;
138 DFBSurfaceDescription dsc;
151 DSDESC_WIDTH | DSDESC_HEIGHT | DSDESC_PIXELFORMAT | DSDESC_CAPS;
152 dsc.caps = DSCAPS_VIDEOONLY;
155 dsc.pixelformat = DSPF_ARGB;
159 curdata->hotx =
hot_x;
160 curdata->hoty = hot_y;
164 (
void *) &dest, &pitch));
168 memcpy((
char *) dest +
i * pitch,
171 curdata->surf->Unlock(curdata->surf);
191 DFB_DisplayData *dispdata =
193 DFB_WindowData *windata = (DFB_WindowData *)
window->driverdata;
197 SetCursorShape(windata->dfbwin,
198 curdata->surf, curdata->hotx,
202 SetCooperativeLevel(dispdata->layer,
203 DLSCL_ADMINISTRATIVE));
205 SetCursorOpacity(dispdata->layer,
208 SetCooperativeLevel(dispdata->layer,
234 DFB_DisplayData *dispdata = (DFB_DisplayData *) display->
driverdata;
235 DFB_WindowData *windata = (DFB_WindowData *)
window->driverdata;
240 cx +
x + windata->client.x,
241 cy +
y + windata->client.y));
252static void DirectFB_FreeMouse(
SDL_Mouse * mouse);
256static DFBEnumerationResult
257EnumMice(DFBInputDeviceID device_id, DFBInputDeviceDescription desc,
260 DFB_DeviceData *devdata = callbackdata;
262 if ((desc.type & DIDTF_MOUSE) && (device_id & id_mask)) {
266 mouse.id = device_id;
272 mouse.FreeMouse = DirectFB_FreeMouse;
275 SDL_AddMouse(&mouse, desc.name, 0, 0, 1);
276 devdata->mouse_id[devdata->num_mice++] = device_id;
286 devdata->num_mice = 0;
287 if (devdata->use_linux_input) {
290 devdata->dfb->EnumInputDevices(devdata->dfb, EnumMice, devdata);
291 if (devdata->num_mice == 0) {
294 devdata->dfb->EnumInputDevices(devdata->dfb, EnumMice, devdata);
297 if (devdata->num_mice == 0) {
306 mouse.FreeMouse = DirectFB_FreeMouse;
309 SDL_AddMouse(&mouse,
"Mouse", 0, 0, 1);
310 devdata->num_mice = 1;
319 if (devdata->use_linux_input) {
339 DFB_DisplayData *dispdata = (DFB_DisplayData *) display->
driverdata;
340 DFB_WindowData *windata = (DFB_WindowData *)
window->driverdata;
346 cx +
x + windata->client.x,
347 cy +
y + windata->client.y));
376 devdata->num_mice = 1;
void DirectFB_InitMouse(_THIS)
#define SDL_DFB_CURSORDATA(curs)
void DirectFB_QuitMouse(_THIS)
#define SDL_DFB_CHECKERR(x...)
#define SDL_DFB_ALLOC_CLEAR(r, s)
#define SDL_DFB_DEVICEDATA(dev)
#define SDL_DFB_RELEASE(x)
#define SDL_assert(condition)
int uint32_t uint32_t uint32_t uint32_t uint32_t int drmModeModeInfoPtr mode int uint32_t uint32_t uint32_t uint32_t int32_t hot_x
void SDL_SetDefaultCursor(SDL_Cursor *cursor)
SDL_Mouse * SDL_GetMouse(void)
GLint GLint GLint GLint GLint GLint y
GLint GLint GLint GLint GLint x
@ SDL_PIXELFORMAT_ARGB8888
SDL_Window * SDL_GetFocusWindow(void)
SDL_VideoDisplay * SDL_GetDisplayForWindow(SDL_Window *window)
SDL_VideoDevice * SDL_GetVideoDevice(void)
static SDL_VideoDevice * _this
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int int in j)
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
EGLSurface EGLNativeWindowType * window
void(* WarpMouse)(SDL_Window *window, int x, int y)
void(* FreeCursor)(SDL_Cursor *cursor)
int(* ShowCursor)(SDL_Cursor *cursor)
SDL_Cursor *(* CreateCursor)(SDL_Surface *surface, int hot_x, int hot_y)
void(* MoveCursor)(SDL_Cursor *cursor)
A collection of pixels used in software blitting.
The type used to identify a window.
static const char * arrow[]