|
@@ -1,6 +1,6 @@
|
|
|
/**********************************************************************************************
|
|
|
*
|
|
|
-* rcore_drm - Functions to manage window, graphics device and inputs
|
|
|
+* rcore_drm - Functions to manage window, graphics device and inputs
|
|
|
*
|
|
|
* PLATFORM: DRM
|
|
|
* - Raspberry Pi 0-5
|
|
@@ -81,7 +81,7 @@
|
|
|
|
|
|
typedef struct {
|
|
|
pthread_t threadId; // Event reading thread id
|
|
|
-
|
|
|
+
|
|
|
int fd; // File descriptor to the device it is assigned to
|
|
|
int eventNum; // Number of 'event<N>' device
|
|
|
Rectangle absRange; // Range of values for absolute pointing devices (touchscreens)
|
|
@@ -111,7 +111,7 @@ typedef struct {
|
|
|
|
|
|
// Input data
|
|
|
InputEventWorker eventWorker[10]; // List of worker threads for every monitored "/dev/input/event<N>"
|
|
|
-
|
|
|
+
|
|
|
// Keyboard data
|
|
|
int defaultKeyboardMode; // Default keyboard mode
|
|
|
bool eventKeyboardMode; // Keyboard in event mode
|
|
@@ -307,6 +307,8 @@ void CloseWindow(void)
|
|
|
timeEndPeriod(1); // Restore time period
|
|
|
#endif
|
|
|
|
|
|
+ // Platform specific close window
|
|
|
+ //--------------------------------------------------------------
|
|
|
if (platform.prevFB)
|
|
|
{
|
|
|
drmModeRmFB(platform.fd, platform.prevFB);
|
|
@@ -392,6 +394,7 @@ void CloseWindow(void)
|
|
|
}
|
|
|
|
|
|
if (platform.gamepadThreadId) pthread_join(platform.gamepadThreadId, NULL);
|
|
|
+ //--------------------------------------------------------------
|
|
|
|
|
|
#if defined(SUPPORT_EVENTS_AUTOMATION)
|
|
|
RL_FREE(events);
|
|
@@ -603,12 +606,12 @@ int GetMonitorPhysicalHeight(int monitor)
|
|
|
int GetMonitorRefreshRate(int monitor)
|
|
|
{
|
|
|
int refresh = 0;
|
|
|
-
|
|
|
+
|
|
|
if ((platform.connector) && (platform.modeIndex >= 0))
|
|
|
{
|
|
|
refresh = platform.connector->modes[platform.modeIndex].vrefresh;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
return refresh;
|
|
|
}
|
|
|
|
|
@@ -718,7 +721,7 @@ double GetTime(void)
|
|
|
unsigned long long int nanoSeconds = (unsigned long long int)ts.tv_sec*1000000000LLU + (unsigned long long int)ts.tv_nsec;
|
|
|
|
|
|
time = (double)(nanoSeconds - CORE.Time.base)*1e-9; // Elapsed time since InitTimer()
|
|
|
-
|
|
|
+
|
|
|
return time;
|
|
|
}
|
|
|
|
|
@@ -763,7 +766,7 @@ int GetGamepadAxisCount(int gamepad)
|
|
|
int axisCount = 0;
|
|
|
if (CORE.Input.Gamepad.ready[gamepad]) ioctl(platform.gamepadStreamFd[gamepad], JSIOCGAXES, &axisCount);
|
|
|
CORE.Input.Gamepad.axisCount = axisCount;
|
|
|
-
|
|
|
+
|
|
|
return CORE.Input.Gamepad.axisCount;
|
|
|
}
|
|
|
|
|
@@ -837,10 +840,10 @@ int GetTouchY(void)
|
|
|
Vector2 GetTouchPosition(int index)
|
|
|
{
|
|
|
Vector2 position = { -1.0f, -1.0f };
|
|
|
-
|
|
|
+
|
|
|
if (index < MAX_TOUCH_POINTS) position = CORE.Input.Touch.position[index];
|
|
|
else TRACELOG(LOG_WARNING, "INPUT: Required touch point out of range (Max touch points: %i)", MAX_TOUCH_POINTS);
|
|
|
-
|
|
|
+
|
|
|
return position;
|
|
|
}
|
|
|
|
|
@@ -856,7 +859,7 @@ void PollInputEvents(void)
|
|
|
// Reset keys/chars pressed registered
|
|
|
CORE.Input.Keyboard.keyPressedQueueCount = 0;
|
|
|
CORE.Input.Keyboard.charPressedQueueCount = 0;
|
|
|
-
|
|
|
+
|
|
|
// Reset key repeats
|
|
|
for (int i = 0; i < MAX_KEYBOARD_KEYS; i++) CORE.Input.Keyboard.keyRepeatInFrame[i] = 0;
|
|
|
|
|
@@ -979,14 +982,14 @@ static bool InitGraphicsDevice(int width, int height)
|
|
|
}
|
|
|
|
|
|
TRACELOG(LOG_TRACE, "DISPLAY: Connectors found: %i", res->count_connectors);
|
|
|
-
|
|
|
+
|
|
|
for (size_t i = 0; i < res->count_connectors; i++)
|
|
|
{
|
|
|
TRACELOG(LOG_TRACE, "DISPLAY: Connector index %i", i);
|
|
|
-
|
|
|
+
|
|
|
drmModeConnector *con = drmModeGetConnector(platform.fd, res->connectors[i]);
|
|
|
TRACELOG(LOG_TRACE, "DISPLAY: Connector modes detected: %i", con->count_modes);
|
|
|
-
|
|
|
+
|
|
|
if ((con->connection == DRM_MODE_CONNECTED) && (con->encoder_id))
|
|
|
{
|
|
|
TRACELOG(LOG_TRACE, "DISPLAY: DRM mode connected");
|
|
@@ -1440,7 +1443,7 @@ static void ProcessKeyboard(void)
|
|
|
}
|
|
|
#endif // SUPPORT_SSH_KEYBOARD_RPI
|
|
|
|
|
|
-// Initialise user input from evdev(/dev/input/event<N>)
|
|
|
+// Initialise user input from evdev(/dev/input/event<N>)
|
|
|
// this means mouse, keyboard or gamepad devices
|
|
|
static void InitEvdevInput(void)
|
|
|
{
|