21 #include "../../SDL_internal.h" 23 #if SDL_VIDEO_DRIVER_DIRECTFB 32 #include "../SDL_sysvideo.h" 33 #include "../../events/SDL_mouse_c.h" 35 static SDL_Cursor *DirectFB_CreateDefaultCursor(
void);
37 int hot_x,
int hot_y);
42 static const char *
arrow[] = {
79 DirectFB_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;
153 dsc.width = surface->
w;
154 dsc.height = surface->
h;
155 dsc.pixelformat = DSPF_ARGB;
159 curdata->hotx =
hot_x;
160 curdata->hoty = hot_y;
164 (
void *) &dest, &pitch));
167 for (i = 0; i < surface->
h; i++)
168 memcpy((
char *) dest + i * pitch,
169 (
char *) p + i * surface->
pitch, 4 * surface->
w);
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,
206 cursor ? 0xC0 : 0x00));
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));
249 static void DirectFB_MoveCursor(
SDL_Cursor * cursor);
252 static void DirectFB_FreeMouse(
SDL_Mouse * mouse);
256 static DFBEnumerationResult
257 EnumMice(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;
SDL_Mouse * SDL_GetMouse(void)
int(* ShowCursor)(SDL_Cursor *cursor)
GLint GLint GLint GLint GLint x
A collection of pixels used in software blitting.
#define SDL_DFB_RELEASE(x)
void DirectFB_QuitMouse(_THIS)
static SDL_VideoDevice * _this
void DirectFB_InitMouse(_THIS)
static const char * arrow[]
SDL_Cursor *(* CreateCursor)(SDL_Surface *surface, int hot_x, int hot_y)
#define SDL_DFB_DEVICEDATA(dev)
SDL_Window * SDL_GetFocusWindow(void)
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)
GLint GLint GLint GLint GLint GLint y
void SDL_SetDefaultCursor(SDL_Cursor *cursor)
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)
void(* FreeCursor)(SDL_Cursor *cursor)
#define SDL_assert(condition)
#define SDL_DFB_ALLOC_CLEAR(r, s)
#define SDL_DFB_CHECKERR(x...)
SDL_VideoDisplay * SDL_GetDisplayForWindow(SDL_Window *window)
EGLSurface EGLNativeWindowType * window
The type used to identify a window.
#define SDL_DFB_CURSORDATA(curs)
void(* WarpMouse)(SDL_Window *window, int x, int y)
SDL_VideoDevice * SDL_GetVideoDevice(void)
void(* MoveCursor)(SDL_Cursor *cursor)
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