|
|
@ -2661,7 +2661,7 @@ double GetTime(void) |
|
|
|
#endif |
|
|
|
|
|
|
|
#if defined(PLATFORM_ANDROID) || defined(PLATFORM_RPI) || defined(PLATFORM_DRM) |
|
|
|
struct timespec ts; |
|
|
|
struct timespec ts = { 0 }; |
|
|
|
clock_gettime(CLOCK_MONOTONIC, &ts); |
|
|
|
unsigned long long int time = (unsigned long long int)ts.tv_sec*1000000000LLU + (unsigned long long int)ts.tv_nsec; |
|
|
|
|
|
|
@ -2818,7 +2818,7 @@ const char *GetFileNameWithoutExt(const char *filePath) |
|
|
|
{ |
|
|
|
#define MAX_FILENAMEWITHOUTEXT_LENGTH 128 |
|
|
|
|
|
|
|
static char fileName[MAX_FILENAMEWITHOUTEXT_LENGTH]; |
|
|
|
static char fileName[MAX_FILENAMEWITHOUTEXT_LENGTH] = { 0 }; |
|
|
|
memset(fileName, 0, MAX_FILENAMEWITHOUTEXT_LENGTH); |
|
|
|
|
|
|
|
if (filePath != NULL) strcpy(fileName, GetFileName(filePath)); // Get filename with extension |
|
|
@ -2851,7 +2851,7 @@ const char *GetDirectoryPath(const char *filePath) |
|
|
|
#endif |
|
|
|
*/ |
|
|
|
const char *lastSlash = NULL; |
|
|
|
static char dirPath[MAX_FILEPATH_LENGTH]; |
|
|
|
static char dirPath[MAX_FILEPATH_LENGTH] = { 0 }; |
|
|
|
memset(dirPath, 0, MAX_FILEPATH_LENGTH); |
|
|
|
|
|
|
|
// In case provided path does not contain a root drive letter (C:\, D:\) nor leading path separator (\, /), |
|
|
@ -2887,7 +2887,7 @@ const char *GetDirectoryPath(const char *filePath) |
|
|
|
// Get previous directory path for a given path |
|
|
|
const char *GetPrevDirectoryPath(const char *dirPath) |
|
|
|
{ |
|
|
|
static char prevDirPath[MAX_FILEPATH_LENGTH]; |
|
|
|
static char prevDirPath[MAX_FILEPATH_LENGTH] = { 0 }; |
|
|
|
memset(prevDirPath, 0, MAX_FILEPATH_LENGTH); |
|
|
|
int pathLen = (int)strlen(dirPath); |
|
|
|
|
|
|
@ -2911,7 +2911,7 @@ const char *GetPrevDirectoryPath(const char *dirPath) |
|
|
|
// Get current working directory |
|
|
|
const char *GetWorkingDirectory(void) |
|
|
|
{ |
|
|
|
static char currentDir[MAX_FILEPATH_LENGTH]; |
|
|
|
static char currentDir[MAX_FILEPATH_LENGTH] = { 0 }; |
|
|
|
memset(currentDir, 0, MAX_FILEPATH_LENGTH); |
|
|
|
|
|
|
|
char *path = GETCWD(currentDir, MAX_FILEPATH_LENGTH - 1); |
|
|
@ -3910,12 +3910,12 @@ static bool InitGraphicsDevice(int width, int height) |
|
|
|
#if defined(PLATFORM_RPI) |
|
|
|
bcm_host_init(); |
|
|
|
|
|
|
|
DISPMANX_ELEMENT_HANDLE_T dispmanElement; |
|
|
|
DISPMANX_DISPLAY_HANDLE_T dispmanDisplay; |
|
|
|
DISPMANX_UPDATE_HANDLE_T dispmanUpdate; |
|
|
|
DISPMANX_ELEMENT_HANDLE_T dispmanElement = { 0 }; |
|
|
|
DISPMANX_DISPLAY_HANDLE_T dispmanDisplay = { 0 }; |
|
|
|
DISPMANX_UPDATE_HANDLE_T dispmanUpdate = { 0 }; |
|
|
|
|
|
|
|
VC_RECT_T dstRect; |
|
|
|
VC_RECT_T srcRect; |
|
|
|
VC_RECT_T dstRect = { 0 }; |
|
|
|
VC_RECT_T srcRect = { 0 }; |
|
|
|
#endif |
|
|
|
|
|
|
|
#if defined(PLATFORM_DRM) |
|
|
@ -4415,7 +4415,7 @@ static bool InitGraphicsDevice(int width, int height) |
|
|
|
// NOTE: RPI dispmanx windowing system takes care of source rectangle scaling to destination rectangle by hardware (no cost) |
|
|
|
// Take care that renderWidth/renderHeight fit on displayWidth/displayHeight aspect ratio |
|
|
|
|
|
|
|
VC_DISPMANX_ALPHA_T alpha; |
|
|
|
VC_DISPMANX_ALPHA_T alpha = { 0 }; |
|
|
|
alpha.flags = DISPMANX_FLAGS_ALPHA_FIXED_ALL_PIXELS; |
|
|
|
//alpha.flags = DISPMANX_FLAGS_ALPHA_FROM_SOURCE; // TODO: Allow transparent framebuffer! -> FLAG_WINDOW_TRANSPARENT |
|
|
|
alpha.opacity = 255; // Set transparency level for framebuffer, requires EGLAttrib: EGL_TRANSPARENT_TYPE |
|
|
@ -5525,7 +5525,7 @@ static int32_t AndroidInputCallback(struct android_app *app, AInputEvent *event) |
|
|
|
|
|
|
|
#if defined(SUPPORT_GESTURES_SYSTEM) |
|
|
|
|
|
|
|
GestureEvent gestureEvent; |
|
|
|
GestureEvent gestureEvent = { 0 }; |
|
|
|
|
|
|
|
// Register touch actions |
|
|
|
if (flags == AMOTION_EVENT_ACTION_DOWN) gestureEvent.touchAction = TOUCH_DOWN; |
|
|
@ -5929,8 +5929,7 @@ static void ConfigureEvdevDevice(char *device) |
|
|
|
|
|
|
|
if (ptrDevName != NULL) |
|
|
|
{ |
|
|
|
if (sscanf(ptrDevName, "t%d", &devNum) == 1) |
|
|
|
worker->eventNum = devNum; |
|
|
|
if (sscanf(ptrDevName, "t%d", &devNum) == 1) worker->eventNum = devNum; |
|
|
|
} |
|
|
|
|
|
|
|
// At this point we have a connection to the device, but we don't yet know what the device is. |
|
|
@ -6074,7 +6073,7 @@ static void PollKeyboardEvents(void) |
|
|
|
// Scancode to keycode mapping for US keyboards |
|
|
|
// TODO: Probably replace this with a keymap from the X11 to get the correct regional map for the keyboard: |
|
|
|
// Currently non US keyboards will have the wrong mapping for some keys |
|
|
|
static const int keymap_US[] = |
|
|
|
static const int keymapUS[] = |
|
|
|
{ 0,256,49,50,51,52,53,54,55,56,57,48,45,61,259,258,81,87,69,82,84, |
|
|
|
89,85,73,79,80,91,93,257,341,65,83,68,70,71,72,74,75,76,59,39,96, |
|
|
|
340,92,90,88,67,86,66,78,77,44,46,47,344,332,342,32,280,290,291, |
|
|
@ -6106,7 +6105,7 @@ static void PollKeyboardEvents(void) |
|
|
|
// Keyboard button parsing |
|
|
|
if ((event.code >= 1) && (event.code <= 255)) //Keyboard keys appear for codes 1 to 255 |
|
|
|
{ |
|
|
|
keycode = keymap_US[event.code & 0xFF]; // The code we get is a scancode so we look up the apropriate keycode |
|
|
|
keycode = keymapUS[event.code & 0xFF]; // The code we get is a scancode so we look up the apropriate keycode |
|
|
|
|
|
|
|
// Make sure we got a valid keycode |
|
|
|
if ((keycode > 0) && (keycode < sizeof(CORE.Input.Keyboard.currentKeyState))) |
|
|
@ -6121,14 +6120,14 @@ static void PollKeyboardEvents(void) |
|
|
|
CORE.Input.Keyboard.keyPressedQueueCount++; |
|
|
|
} |
|
|
|
|
|
|
|
#if defined(SUPPORT_SCREEN_CAPTURE) |
|
|
|
// Check screen capture key (raylib key: KEY_F12) |
|
|
|
if (CORE.Input.Keyboard.currentKeyState[301] == 1) |
|
|
|
{ |
|
|
|
TakeScreenshot(TextFormat("screenshot%03i.png", screenshotCounter)); |
|
|
|
screenshotCounter++; |
|
|
|
} |
|
|
|
#endif |
|
|
|
#if defined(SUPPORT_SCREEN_CAPTURE) |
|
|
|
// Check screen capture key (raylib key: KEY_F12) |
|
|
|
if (CORE.Input.Keyboard.currentKeyState[301] == 1) |
|
|
|
{ |
|
|
|
TakeScreenshot(TextFormat("screenshot%03i.png", screenshotCounter)); |
|
|
|
screenshotCounter++; |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
|
if (CORE.Input.Keyboard.currentKeyState[CORE.Input.Keyboard.exitKey] == 1) CORE.Window.shouldClose = true; |
|
|
|
|
|
|
|