21 #include "../../SDL_internal.h"
23 #if SDL_VIDEO_DRIVER_DIRECTFB
31 #include "../SDL_sysvideo.h"
32 #include "../../events/SDL_mouse_c.h"
34 static SDL_Cursor *DirectFB_CreateDefaultCursor(
void);
36 int hot_x,
int hot_y);
41 static const char *
arrow[] = {
78 DirectFB_CreateDefaultCursor(
void)
83 DFB_CursorData *curdata;
84 DFBSurfaceDescription dsc;
93 DSDESC_WIDTH | DSDESC_HEIGHT | DSDESC_PIXELFORMAT | DSDESC_CAPS;
94 dsc.caps = DSCAPS_VIDEOONLY;
97 dsc.pixelformat = DSPF_ARGB;
106 (
void *) &dest, &pitch));
109 for (
i = 0;
i < 32;
i++)
111 for (
j = 0;
j < 32;
j++)
115 case ' ': dest[
j] = 0x00000000;
break;
116 case '.': dest[
j] = 0xffffffff;
break;
117 case 'X': dest[
j] = 0xff000000;
break;
120 dest += (pitch >> 2);
123 curdata->surf->Unlock(curdata->surf);
136 DFB_CursorData *curdata;
137 DFBSurfaceDescription dsc;
150 DSDESC_WIDTH | DSDESC_HEIGHT | DSDESC_PIXELFORMAT | DSDESC_CAPS;
151 dsc.caps = DSCAPS_VIDEOONLY;
154 dsc.pixelformat = DSPF_ARGB;
158 curdata->hotx =
hot_x;
159 curdata->hoty = hot_y;
163 (
void *) &dest, &pitch));
167 memcpy((
char *) dest +
i * pitch,
170 curdata->surf->Unlock(curdata->surf);
190 DFB_DisplayData *dispdata =
192 DFB_WindowData *windata = (DFB_WindowData *)
window->driverdata;
196 SetCursorShape(windata->dfbwin,
197 curdata->surf, curdata->hotx,
201 SetCooperativeLevel(dispdata->layer,
202 DLSCL_ADMINISTRATIVE));
204 SetCursorOpacity(dispdata->layer,
207 SetCooperativeLevel(dispdata->layer,
233 DFB_DisplayData *dispdata = (DFB_DisplayData *) display->
driverdata;
234 DFB_WindowData *windata = (DFB_WindowData *)
window->driverdata;
239 cx +
x + windata->client.x,
240 cy +
y + windata->client.y));
251 static void DirectFB_FreeMouse(
SDL_Mouse * mouse);
255 static DFBEnumerationResult
256 EnumMice(DFBInputDeviceID device_id, DFBInputDeviceDescription desc,
259 DFB_DeviceData *devdata = callbackdata;
261 if ((desc.type & DIDTF_MOUSE) && (device_id & id_mask)) {
265 mouse.id = device_id;
271 mouse.FreeMouse = DirectFB_FreeMouse;
274 SDL_AddMouse(&mouse, desc.name, 0, 0, 1);
275 devdata->mouse_id[devdata->num_mice++] = device_id;
285 devdata->num_mice = 0;
286 if (devdata->use_linux_input) {
289 devdata->dfb->EnumInputDevices(devdata->dfb, EnumMice, devdata);
290 if (devdata->num_mice == 0) {
293 devdata->dfb->EnumInputDevices(devdata->dfb, EnumMice, devdata);
296 if (devdata->num_mice == 0) {
305 mouse.FreeMouse = DirectFB_FreeMouse;
308 SDL_AddMouse(&mouse,
"Mouse", 0, 0, 1);
309 devdata->num_mice = 1;
318 if (devdata->use_linux_input) {
338 DFB_DisplayData *dispdata = (DFB_DisplayData *) display->
driverdata;
339 DFB_WindowData *windata = (DFB_WindowData *)
window->driverdata;
345 cx +
x + windata->client.x,
346 cy +
y + windata->client.y));
375 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
SDL_Mouse * SDL_GetMouse(void)
void SDL_SetDefaultCursor(SDL_Cursor *cursor)
GLint GLint GLint GLint GLint GLint y
GLint GLint GLint GLint GLint x
@ SDL_PIXELFORMAT_ARGB8888
SDL_VideoDevice * SDL_GetVideoDevice(void)
SDL_Window * SDL_GetFocusWindow(void)
SDL_VideoDisplay * SDL_GetDisplayForWindow(SDL_Window *window)
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 in i)
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)
EGLSurface EGLNativeWindowType * window
void(* WarpMouse)(SDL_Window *window, int x, int y)
SDL_Cursor *(* CreateCursor)(SDL_Surface *surface, int hot_x, int hot_y)
void(* FreeCursor)(SDL_Cursor *cursor)
int(* ShowCursor)(SDL_Cursor *cursor)
void(* MoveCursor)(SDL_Cursor *cursor)
A collection of pixels used in software blitting.
The type used to identify a window.
static const char * arrow[]