mirror of
https://github.com/libretro/RetroArch
synced 2025-01-29 18:32:44 +00:00
Revert "(pt. 2) static variables are initialized to '0' automatically as per C rules"
This reverts commit 47410df7a3d2480dd8fc7fb97cf00319ce5e9344.
This commit is contained in:
parent
47410df7a3
commit
82e4504968
@ -1,206 +1,206 @@
|
|||||||
/* RetroArch - A frontend for libretro.
|
/* RetroArch - A frontend for libretro.
|
||||||
* Copyright (C) 2010-2014 - Hans-Kristian Arntzen
|
* Copyright (C) 2010-2014 - Hans-Kristian Arntzen
|
||||||
* Copyright (C) 2011-2021 - Daniel De Matteis
|
* Copyright (C) 2011-2021 - Daniel De Matteis
|
||||||
*
|
*
|
||||||
* RetroArch is free software: you can redistribute it and/or modify it under the terms
|
* RetroArch is free software: you can redistribute it and/or modify it under the terms
|
||||||
* of the GNU General Public License as published by the Free Software Found-
|
* of the GNU General Public License as published by the Free Software Found-
|
||||||
* ation, either version 3 of the License, or (at your option) any later version.
|
* ation, either version 3 of the License, or (at your option) any later version.
|
||||||
*
|
*
|
||||||
* RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
* RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||||
* PURPOSE. See the GNU General Public License for more details.
|
* PURPOSE. See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License along with RetroArch.
|
* You should have received a copy of the GNU General Public License along with RetroArch.
|
||||||
* If not, see <http://www.gnu.org/licenses/>.
|
* If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "../config.h"
|
#include "../config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "../driver.h"
|
#include "../driver.h"
|
||||||
#include "../list_special.h"
|
#include "../list_special.h"
|
||||||
#include "../retroarch.h"
|
#include "../retroarch.h"
|
||||||
#include "../runloop.h"
|
#include "../runloop.h"
|
||||||
#include "../verbosity.h"
|
#include "../verbosity.h"
|
||||||
|
|
||||||
#include "bluetooth_driver.h"
|
#include "bluetooth_driver.h"
|
||||||
|
|
||||||
static bluetooth_driver_t bluetooth_null = {
|
static bluetooth_driver_t bluetooth_null = {
|
||||||
NULL, /* init */
|
NULL, /* init */
|
||||||
NULL, /* free */
|
NULL, /* free */
|
||||||
NULL, /* scan */
|
NULL, /* scan */
|
||||||
NULL, /* get_devices */
|
NULL, /* get_devices */
|
||||||
NULL, /* device_is_connected */
|
NULL, /* device_is_connected */
|
||||||
NULL, /* device_get_sublabel */
|
NULL, /* device_get_sublabel */
|
||||||
NULL, /* connect_device */
|
NULL, /* connect_device */
|
||||||
NULL, /* remove_device */
|
NULL, /* remove_device */
|
||||||
"null",
|
"null",
|
||||||
};
|
};
|
||||||
|
|
||||||
const bluetooth_driver_t *bluetooth_drivers[] = {
|
const bluetooth_driver_t *bluetooth_drivers[] = {
|
||||||
#ifdef HAVE_BLUETOOTH
|
#ifdef HAVE_BLUETOOTH
|
||||||
&bluetooth_bluetoothctl,
|
&bluetooth_bluetoothctl,
|
||||||
#ifdef HAVE_DBUS
|
#ifdef HAVE_DBUS
|
||||||
&bluetooth_bluez,
|
&bluetooth_bluez,
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
&bluetooth_null,
|
&bluetooth_null,
|
||||||
NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
static bluetooth_driver_state_t bluetooth_driver_st;
|
static bluetooth_driver_state_t bluetooth_driver_st = {0};
|
||||||
|
|
||||||
bluetooth_driver_state_t *bluetooth_state_get_ptr(void)
|
bluetooth_driver_state_t *bluetooth_state_get_ptr(void)
|
||||||
{
|
{
|
||||||
return &bluetooth_driver_st;
|
return &bluetooth_driver_st;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* config_get_bluetooth_driver_options:
|
* config_get_bluetooth_driver_options:
|
||||||
*
|
*
|
||||||
* Get an enumerated list of all bluetooth driver names,
|
* Get an enumerated list of all bluetooth driver names,
|
||||||
* separated by '|'.
|
* separated by '|'.
|
||||||
*
|
*
|
||||||
* Returns: string listing of all bluetooth driver names,
|
* Returns: string listing of all bluetooth driver names,
|
||||||
* separated by '|'.
|
* separated by '|'.
|
||||||
**/
|
**/
|
||||||
const char* config_get_bluetooth_driver_options(void)
|
const char* config_get_bluetooth_driver_options(void)
|
||||||
{
|
{
|
||||||
return char_list_new_special(STRING_LIST_BLUETOOTH_DRIVERS, NULL);
|
return char_list_new_special(STRING_LIST_BLUETOOTH_DRIVERS, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void driver_bluetooth_scan(void)
|
void driver_bluetooth_scan(void)
|
||||||
{
|
{
|
||||||
bluetooth_driver_state_t *bt_st = &bluetooth_driver_st;
|
bluetooth_driver_state_t *bt_st = &bluetooth_driver_st;
|
||||||
if ( bt_st
|
if ( bt_st
|
||||||
&& bt_st->active
|
&& bt_st->active
|
||||||
&& bt_st->drv->scan )
|
&& bt_st->drv->scan )
|
||||||
bt_st->drv->scan(bt_st->data);
|
bt_st->drv->scan(bt_st->data);
|
||||||
}
|
}
|
||||||
|
|
||||||
void driver_bluetooth_get_devices(struct string_list* devices)
|
void driver_bluetooth_get_devices(struct string_list* devices)
|
||||||
{
|
{
|
||||||
bluetooth_driver_state_t *bt_st = &bluetooth_driver_st;
|
bluetooth_driver_state_t *bt_st = &bluetooth_driver_st;
|
||||||
if ( bt_st
|
if ( bt_st
|
||||||
&& bt_st->active
|
&& bt_st->active
|
||||||
&& bt_st->drv->get_devices )
|
&& bt_st->drv->get_devices )
|
||||||
bt_st->drv->get_devices(bt_st->data, devices);
|
bt_st->drv->get_devices(bt_st->data, devices);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool driver_bluetooth_device_is_connected(unsigned i)
|
bool driver_bluetooth_device_is_connected(unsigned i)
|
||||||
{
|
{
|
||||||
bluetooth_driver_state_t *bt_st = &bluetooth_driver_st;
|
bluetooth_driver_state_t *bt_st = &bluetooth_driver_st;
|
||||||
if ( bt_st
|
if ( bt_st
|
||||||
&& bt_st->active
|
&& bt_st->active
|
||||||
&& bt_st->drv->device_is_connected )
|
&& bt_st->drv->device_is_connected )
|
||||||
return bt_st->drv->device_is_connected(bt_st->data, i);
|
return bt_st->drv->device_is_connected(bt_st->data, i);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void driver_bluetooth_device_get_sublabel(char *s, unsigned i, size_t len)
|
void driver_bluetooth_device_get_sublabel(char *s, unsigned i, size_t len)
|
||||||
{
|
{
|
||||||
bluetooth_driver_state_t *bt_st = &bluetooth_driver_st;
|
bluetooth_driver_state_t *bt_st = &bluetooth_driver_st;
|
||||||
if ( bt_st
|
if ( bt_st
|
||||||
&& bt_st->active
|
&& bt_st->active
|
||||||
&& bt_st->drv->device_get_sublabel )
|
&& bt_st->drv->device_get_sublabel )
|
||||||
bt_st->drv->device_get_sublabel(bt_st->data, s, i, len);
|
bt_st->drv->device_get_sublabel(bt_st->data, s, i, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool driver_bluetooth_connect_device(unsigned i)
|
bool driver_bluetooth_connect_device(unsigned i)
|
||||||
{
|
{
|
||||||
bluetooth_driver_state_t *bt_st = &bluetooth_driver_st;
|
bluetooth_driver_state_t *bt_st = &bluetooth_driver_st;
|
||||||
if (bt_st->active)
|
if (bt_st->active)
|
||||||
return bt_st->drv->connect_device(bt_st->data, i);
|
return bt_st->drv->connect_device(bt_st->data, i);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool driver_bluetooth_remove_device(unsigned i)
|
bool driver_bluetooth_remove_device(unsigned i)
|
||||||
{
|
{
|
||||||
bluetooth_driver_state_t *bt_st = &bluetooth_driver_st;
|
bluetooth_driver_state_t *bt_st = &bluetooth_driver_st;
|
||||||
if (bt_st->active)
|
if (bt_st->active)
|
||||||
return bt_st->drv->remove_device(bt_st->data, i);
|
return bt_st->drv->remove_device(bt_st->data, i);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool bluetooth_driver_ctl(enum rarch_bluetooth_ctl_state state, void *data)
|
bool bluetooth_driver_ctl(enum rarch_bluetooth_ctl_state state, void *data)
|
||||||
{
|
{
|
||||||
bluetooth_driver_state_t *bt_st = &bluetooth_driver_st;
|
bluetooth_driver_state_t *bt_st = &bluetooth_driver_st;
|
||||||
settings_t *settings = config_get_ptr();
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
switch (state)
|
switch (state)
|
||||||
{
|
{
|
||||||
case RARCH_BLUETOOTH_CTL_DESTROY:
|
case RARCH_BLUETOOTH_CTL_DESTROY:
|
||||||
bt_st->drv = NULL;
|
bt_st->drv = NULL;
|
||||||
bt_st->data = NULL;
|
bt_st->data = NULL;
|
||||||
bt_st->active = false;
|
bt_st->active = false;
|
||||||
break;
|
break;
|
||||||
case RARCH_BLUETOOTH_CTL_FIND_DRIVER:
|
case RARCH_BLUETOOTH_CTL_FIND_DRIVER:
|
||||||
{
|
{
|
||||||
const char *prefix = "bluetooth driver";
|
const char *prefix = "bluetooth driver";
|
||||||
int i = (int)driver_find_index(
|
int i = (int)driver_find_index(
|
||||||
"bluetooth_driver",
|
"bluetooth_driver",
|
||||||
settings->arrays.bluetooth_driver);
|
settings->arrays.bluetooth_driver);
|
||||||
|
|
||||||
if (i >= 0)
|
if (i >= 0)
|
||||||
bt_st->drv = (const bluetooth_driver_t*)bluetooth_drivers[i];
|
bt_st->drv = (const bluetooth_driver_t*)bluetooth_drivers[i];
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (verbosity_is_enabled())
|
if (verbosity_is_enabled())
|
||||||
{
|
{
|
||||||
unsigned d;
|
unsigned d;
|
||||||
RARCH_ERR("Couldn't find any %s named \"%s\"\n", prefix,
|
RARCH_ERR("Couldn't find any %s named \"%s\"\n", prefix,
|
||||||
settings->arrays.bluetooth_driver);
|
settings->arrays.bluetooth_driver);
|
||||||
RARCH_LOG_OUTPUT("Available %ss are:\n", prefix);
|
RARCH_LOG_OUTPUT("Available %ss are:\n", prefix);
|
||||||
for (d = 0; bluetooth_drivers[d]; d++)
|
for (d = 0; bluetooth_drivers[d]; d++)
|
||||||
RARCH_LOG_OUTPUT("\t%s\n", bluetooth_drivers[d]->ident);
|
RARCH_LOG_OUTPUT("\t%s\n", bluetooth_drivers[d]->ident);
|
||||||
|
|
||||||
RARCH_WARN("Going to default to first %s...\n", prefix);
|
RARCH_WARN("Going to default to first %s...\n", prefix);
|
||||||
}
|
}
|
||||||
|
|
||||||
bt_st->drv = (const bluetooth_driver_t*)bluetooth_drivers[0];
|
bt_st->drv = (const bluetooth_driver_t*)bluetooth_drivers[0];
|
||||||
|
|
||||||
if (!bt_st->drv)
|
if (!bt_st->drv)
|
||||||
retroarch_fail(1, "find_bluetooth_driver()");
|
retroarch_fail(1, "find_bluetooth_driver()");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case RARCH_BLUETOOTH_CTL_DEINIT:
|
case RARCH_BLUETOOTH_CTL_DEINIT:
|
||||||
if (bt_st->data && bt_st->drv)
|
if (bt_st->data && bt_st->drv)
|
||||||
{
|
{
|
||||||
if (bt_st->drv->free)
|
if (bt_st->drv->free)
|
||||||
bt_st->drv->free(bt_st->data);
|
bt_st->drv->free(bt_st->data);
|
||||||
}
|
}
|
||||||
|
|
||||||
bt_st->data = NULL;
|
bt_st->data = NULL;
|
||||||
bt_st->active = false;
|
bt_st->active = false;
|
||||||
break;
|
break;
|
||||||
case RARCH_BLUETOOTH_CTL_INIT:
|
case RARCH_BLUETOOTH_CTL_INIT:
|
||||||
/* Resource leaks will follow if bluetooth is initialized twice. */
|
/* Resource leaks will follow if bluetooth is initialized twice. */
|
||||||
if (bt_st->data)
|
if (bt_st->data)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
bluetooth_driver_ctl(RARCH_BLUETOOTH_CTL_FIND_DRIVER, NULL);
|
bluetooth_driver_ctl(RARCH_BLUETOOTH_CTL_FIND_DRIVER, NULL);
|
||||||
|
|
||||||
if (bt_st->drv && bt_st->drv->init)
|
if (bt_st->drv && bt_st->drv->init)
|
||||||
{
|
{
|
||||||
bt_st->active = true;
|
bt_st->active = true;
|
||||||
bt_st->data = bt_st->drv->init();
|
bt_st->data = bt_st->drv->init();
|
||||||
|
|
||||||
if (!bt_st->data)
|
if (!bt_st->data)
|
||||||
{
|
{
|
||||||
RARCH_ERR("Failed to initialize bluetooth driver. Will continue without bluetooth.\n");
|
RARCH_ERR("Failed to initialize bluetooth driver. Will continue without bluetooth.\n");
|
||||||
bt_st->active = false;
|
bt_st->active = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
bt_st->active = false;
|
bt_st->active = false;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -1,146 +1,146 @@
|
|||||||
/* RetroArch - A frontend for libretro.
|
/* RetroArch - A frontend for libretro.
|
||||||
* Copyright (C) 2010-2014 - Hans-Kristian Arntzen
|
* Copyright (C) 2010-2014 - Hans-Kristian Arntzen
|
||||||
* Copyright (C) 2011-2021 - Daniel De Matteis
|
* Copyright (C) 2011-2021 - Daniel De Matteis
|
||||||
*
|
*
|
||||||
* RetroArch is free software: you can redistribute it and/or modify it under the terms
|
* RetroArch is free software: you can redistribute it and/or modify it under the terms
|
||||||
* of the GNU General Public License as published by the Free Software Found-
|
* of the GNU General Public License as published by the Free Software Found-
|
||||||
* ation, either version 3 of the License, or (at your option) any later version.
|
* ation, either version 3 of the License, or (at your option) any later version.
|
||||||
*
|
*
|
||||||
* RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
* RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||||
* PURPOSE. See the GNU General Public License for more details.
|
* PURPOSE. See the GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License along with RetroArch.
|
* You should have received a copy of the GNU General Public License along with RetroArch.
|
||||||
* If not, see <http://www.gnu.org/licenses/>.
|
* If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#include <libretro.h>
|
#include <libretro.h>
|
||||||
|
|
||||||
#include "../configuration.h"
|
#include "../configuration.h"
|
||||||
#include "../driver.h"
|
#include "../driver.h"
|
||||||
#include "../list_special.h"
|
#include "../list_special.h"
|
||||||
#include "../runloop.h"
|
#include "../runloop.h"
|
||||||
#include "../verbosity.h"
|
#include "../verbosity.h"
|
||||||
|
|
||||||
#include "camera_driver.h"
|
#include "camera_driver.h"
|
||||||
|
|
||||||
static void *nullcamera_init(const char *device, uint64_t caps,
|
static void *nullcamera_init(const char *device, uint64_t caps,
|
||||||
unsigned width, unsigned height) { return (void*)-1; }
|
unsigned width, unsigned height) { return (void*)-1; }
|
||||||
static void nullcamera_free(void *data) { }
|
static void nullcamera_free(void *data) { }
|
||||||
static void nullcamera_stop(void *data) { }
|
static void nullcamera_stop(void *data) { }
|
||||||
static bool nullcamera_start(void *data) { return true; }
|
static bool nullcamera_start(void *data) { return true; }
|
||||||
static bool nullcamera_poll(void *a,
|
static bool nullcamera_poll(void *a,
|
||||||
retro_camera_frame_raw_framebuffer_t b,
|
retro_camera_frame_raw_framebuffer_t b,
|
||||||
retro_camera_frame_opengl_texture_t c) { return true; }
|
retro_camera_frame_opengl_texture_t c) { return true; }
|
||||||
|
|
||||||
static camera_driver_t camera_null = {
|
static camera_driver_t camera_null = {
|
||||||
nullcamera_init,
|
nullcamera_init,
|
||||||
nullcamera_free,
|
nullcamera_free,
|
||||||
nullcamera_start,
|
nullcamera_start,
|
||||||
nullcamera_stop,
|
nullcamera_stop,
|
||||||
nullcamera_poll,
|
nullcamera_poll,
|
||||||
"null",
|
"null",
|
||||||
};
|
};
|
||||||
|
|
||||||
const camera_driver_t *camera_drivers[] = {
|
const camera_driver_t *camera_drivers[] = {
|
||||||
#ifdef HAVE_V4L2
|
#ifdef HAVE_V4L2
|
||||||
&camera_v4l2,
|
&camera_v4l2,
|
||||||
#endif
|
#endif
|
||||||
#ifdef EMSCRIPTEN
|
#ifdef EMSCRIPTEN
|
||||||
&camera_rwebcam,
|
&camera_rwebcam,
|
||||||
#endif
|
#endif
|
||||||
#ifdef ANDROID
|
#ifdef ANDROID
|
||||||
&camera_android,
|
&camera_android,
|
||||||
#endif
|
#endif
|
||||||
&camera_null,
|
&camera_null,
|
||||||
NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
static camera_driver_state_t camera_driver_st;
|
static camera_driver_state_t camera_driver_st = {0};
|
||||||
|
|
||||||
camera_driver_state_t *camera_state_get_ptr(void)
|
camera_driver_state_t *camera_state_get_ptr(void)
|
||||||
{
|
{
|
||||||
return &camera_driver_st;
|
return &camera_driver_st;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* config_get_camera_driver_options:
|
* config_get_camera_driver_options:
|
||||||
*
|
*
|
||||||
* Get an enumerated list of all camera driver names,
|
* Get an enumerated list of all camera driver names,
|
||||||
* separated by '|'.
|
* separated by '|'.
|
||||||
*
|
*
|
||||||
* Returns: string listing of all camera driver names,
|
* Returns: string listing of all camera driver names,
|
||||||
* separated by '|'.
|
* separated by '|'.
|
||||||
**/
|
**/
|
||||||
const char *config_get_camera_driver_options(void)
|
const char *config_get_camera_driver_options(void)
|
||||||
{
|
{
|
||||||
return char_list_new_special(STRING_LIST_CAMERA_DRIVERS, NULL);
|
return char_list_new_special(STRING_LIST_CAMERA_DRIVERS, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool driver_camera_start(void)
|
bool driver_camera_start(void)
|
||||||
{
|
{
|
||||||
camera_driver_state_t *camera_st = &camera_driver_st;
|
camera_driver_state_t *camera_st = &camera_driver_st;
|
||||||
if ( camera_st
|
if ( camera_st
|
||||||
&& camera_st->data
|
&& camera_st->data
|
||||||
&& camera_st->driver
|
&& camera_st->driver
|
||||||
&& camera_st->driver->start)
|
&& camera_st->driver->start)
|
||||||
{
|
{
|
||||||
settings_t *settings = config_get_ptr();
|
settings_t *settings = config_get_ptr();
|
||||||
bool camera_allow = settings->bools.camera_allow;
|
bool camera_allow = settings->bools.camera_allow;
|
||||||
if (camera_allow)
|
if (camera_allow)
|
||||||
return camera_st->driver->start(camera_st->data);
|
return camera_st->driver->start(camera_st->data);
|
||||||
|
|
||||||
runloop_msg_queue_push(
|
runloop_msg_queue_push(
|
||||||
"Camera is explicitly disabled.\n", 1, 180, false,
|
"Camera is explicitly disabled.\n", 1, 180, false,
|
||||||
NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
|
NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void driver_camera_stop(void)
|
void driver_camera_stop(void)
|
||||||
{
|
{
|
||||||
camera_driver_state_t *camera_st = &camera_driver_st;
|
camera_driver_state_t *camera_st = &camera_driver_st;
|
||||||
if ( camera_st->driver
|
if ( camera_st->driver
|
||||||
&& camera_st->driver->stop
|
&& camera_st->driver->stop
|
||||||
&& camera_st->data)
|
&& camera_st->data)
|
||||||
camera_st->driver->stop(camera_st->data);
|
camera_st->driver->stop(camera_st->data);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool camera_driver_find_driver(const char *prefix,
|
bool camera_driver_find_driver(const char *prefix,
|
||||||
bool verbosity_enabled)
|
bool verbosity_enabled)
|
||||||
{
|
{
|
||||||
settings_t *settings = config_get_ptr();
|
settings_t *settings = config_get_ptr();
|
||||||
camera_driver_state_t
|
camera_driver_state_t
|
||||||
*camera_st = &camera_driver_st;
|
*camera_st = &camera_driver_st;
|
||||||
int i = (int)driver_find_index(
|
int i = (int)driver_find_index(
|
||||||
"camera_driver",
|
"camera_driver",
|
||||||
settings->arrays.camera_driver);
|
settings->arrays.camera_driver);
|
||||||
|
|
||||||
if (i >= 0)
|
if (i >= 0)
|
||||||
camera_st->driver = (const camera_driver_t*)camera_drivers[i];
|
camera_st->driver = (const camera_driver_t*)camera_drivers[i];
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (verbosity_enabled)
|
if (verbosity_enabled)
|
||||||
{
|
{
|
||||||
unsigned d;
|
unsigned d;
|
||||||
RARCH_ERR("Couldn't find any %s named \"%s\"\n", prefix,
|
RARCH_ERR("Couldn't find any %s named \"%s\"\n", prefix,
|
||||||
settings->arrays.camera_driver);
|
settings->arrays.camera_driver);
|
||||||
RARCH_LOG_OUTPUT("Available %ss are:\n", prefix);
|
RARCH_LOG_OUTPUT("Available %ss are:\n", prefix);
|
||||||
for (d = 0; camera_drivers[d]; d++)
|
for (d = 0; camera_drivers[d]; d++)
|
||||||
{
|
{
|
||||||
if (camera_drivers[d])
|
if (camera_drivers[d])
|
||||||
{
|
{
|
||||||
RARCH_LOG_OUTPUT("\t%s\n", camera_drivers[d]->ident);
|
RARCH_LOG_OUTPUT("\t%s\n", camera_drivers[d]->ident);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RARCH_WARN("Going to default to first %s...\n", prefix);
|
RARCH_WARN("Going to default to first %s...\n", prefix);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(camera_st->driver = (const camera_driver_t*)camera_drivers[0]))
|
if (!(camera_st->driver = (const camera_driver_t*)camera_drivers[0]))
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -87,13 +87,13 @@ struct remote_joypad_message
|
|||||||
uint16_t state;
|
uint16_t state;
|
||||||
};
|
};
|
||||||
|
|
||||||
static float tilt_sensor_values[3];
|
|
||||||
static float gyro_sensor_values[3];
|
|
||||||
static bool keyboard_state[RETROK_LAST];
|
static bool keyboard_state[RETROK_LAST];
|
||||||
static bool keyboard_state_validated[RETROK_LAST];
|
static bool keyboard_state_validated[RETROK_LAST];
|
||||||
static bool tilt_sensor_enabled = false;
|
static bool tilt_sensor_enabled = false;
|
||||||
static bool gyro_sensor_enabled = false;
|
static bool gyro_sensor_enabled = false;
|
||||||
static bool lux_sensor_enabled = false;
|
static bool lux_sensor_enabled = false;
|
||||||
|
static float tilt_sensor_values[3] = {0};
|
||||||
|
static float gyro_sensor_values[3] = {0};
|
||||||
static float lux_sensor_value = 0.0f;
|
static float lux_sensor_value = 0.0f;
|
||||||
static unsigned mouse_type = 0;
|
static unsigned mouse_type = 0;
|
||||||
static int pointer_x = 0;
|
static int pointer_x = 0;
|
||||||
@ -727,7 +727,7 @@ static void retropad_update_input(void)
|
|||||||
pointer_y = (int16_t)state;
|
pointer_y = (int16_t)state;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Do not send extra descriptor state - RA side is not prepared to receive it */
|
/* Do not send extra descriptor state - RA side is not prepared to receive it */
|
||||||
if (i>1)
|
if (i>1)
|
||||||
continue;
|
continue;
|
||||||
@ -1034,7 +1034,7 @@ void NETRETROPAD_CORE_PREFIX(retro_run)(void)
|
|||||||
sensor_item_colors[median_index] = (uint16_t)(fabsf(32*4*value)) << 11;
|
sensor_item_colors[median_index] = (uint16_t)(fabsf(32*4*value)) << 11;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Button values for sensor test screen, since they do not follow any pattern, it is *
|
/* Button values for sensor test screen, since they do not follow any pattern, it is *
|
||||||
* provided as a direct list. */
|
* provided as a direct list. */
|
||||||
if (mouse_type == NETRETROPAD_MOUSE)
|
if (mouse_type == NETRETROPAD_MOUSE)
|
||||||
@ -1061,7 +1061,7 @@ void NETRETROPAD_CORE_PREFIX(retro_run)(void)
|
|||||||
|
|
||||||
offset = DESC_OFFSET(&mouse, 0, 0, RETRO_DEVICE_ID_MOUSE_HORIZ_WHEELUP);
|
offset = DESC_OFFSET(&mouse, 0, 0, RETRO_DEVICE_ID_MOUSE_HORIZ_WHEELUP);
|
||||||
sensor_item_colors[86] = mouse.value[offset] ? 0xA000 : 0x0000;
|
sensor_item_colors[86] = mouse.value[offset] ? 0xA000 : 0x0000;
|
||||||
|
|
||||||
offset = DESC_OFFSET(&mouse, 0, 0, RETRO_DEVICE_ID_MOUSE_BUTTON_4);
|
offset = DESC_OFFSET(&mouse, 0, 0, RETRO_DEVICE_ID_MOUSE_BUTTON_4);
|
||||||
sensor_item_colors[88] = mouse.value[offset] ? 0xA000 : 0x0000;
|
sensor_item_colors[88] = mouse.value[offset] ? 0xA000 : 0x0000;
|
||||||
|
|
||||||
@ -1093,7 +1093,7 @@ void NETRETROPAD_CORE_PREFIX(retro_run)(void)
|
|||||||
|
|
||||||
offset = DESC_OFFSET(&lightgun, 0, 0, RETRO_DEVICE_ID_LIGHTGUN_SELECT);
|
offset = DESC_OFFSET(&lightgun, 0, 0, RETRO_DEVICE_ID_LIGHTGUN_SELECT);
|
||||||
sensor_item_colors[76] = lightgun.value[offset] ? 0xA000 : 0x0000;
|
sensor_item_colors[76] = lightgun.value[offset] ? 0xA000 : 0x0000;
|
||||||
|
|
||||||
offset = DESC_OFFSET(&lightgun, 0, 0, RETRO_DEVICE_ID_LIGHTGUN_IS_OFFSCREEN);
|
offset = DESC_OFFSET(&lightgun, 0, 0, RETRO_DEVICE_ID_LIGHTGUN_IS_OFFSCREEN);
|
||||||
sensor_item_colors[77] = lightgun.value[offset] ? 0xA000 : 0x0000;
|
sensor_item_colors[77] = lightgun.value[offset] ? 0xA000 : 0x0000;
|
||||||
|
|
||||||
@ -1386,7 +1386,7 @@ void NETRETROPAD_CORE_PREFIX(retro_run)(void)
|
|||||||
pointer_prev_y = pointer_y_coord;
|
pointer_prev_y = pointer_y_coord;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
NETRETROPAD_CORE_PREFIX(video_cb)(frame_buf, 320, 240, 640);
|
NETRETROPAD_CORE_PREFIX(video_cb)(frame_buf, 320, 240, 640);
|
||||||
retro_sleep(4);
|
retro_sleep(4);
|
||||||
}
|
}
|
||||||
|
@ -112,10 +112,10 @@ typedef enum
|
|||||||
} CFDomainMask;
|
} CFDomainMask;
|
||||||
|
|
||||||
#if (defined(OSX) && (MAC_OS_X_VERSION_MAX_ALLOWED >= 101200))
|
#if (defined(OSX) && (MAC_OS_X_VERSION_MAX_ALLOWED >= 101200))
|
||||||
static int speak_pid = 0;
|
static int speak_pid = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static char darwin_cpu_model_name[64];
|
static char darwin_cpu_model_name[64] = {0};
|
||||||
|
|
||||||
static void CFSearchPathForDirectoriesInDomains(
|
static void CFSearchPathForDirectoriesInDomains(
|
||||||
char *s, size_t len)
|
char *s, size_t len)
|
||||||
|
@ -81,7 +81,7 @@
|
|||||||
#define MODULE_PATH "/data/self/system/common/lib/"
|
#define MODULE_PATH "/data/self/system/common/lib/"
|
||||||
#define MODULE_PATH_EXT "/app0/sce_module/"
|
#define MODULE_PATH_EXT "/app0/sce_module/"
|
||||||
|
|
||||||
static char eboot_path[512];
|
static char eboot_path[512] = {0};
|
||||||
SceKernelModule s_piglet_module;
|
SceKernelModule s_piglet_module;
|
||||||
SceKernelModule s_shacc_module;
|
SceKernelModule s_shacc_module;
|
||||||
|
|
||||||
@ -160,7 +160,7 @@ static void frontend_orbis_get_env(int *argc, char *argv[],
|
|||||||
|
|
||||||
if (!string_is_empty(argv[CONTENT_PATH_ARG_INDEX]))
|
if (!string_is_empty(argv[CONTENT_PATH_ARG_INDEX]))
|
||||||
{
|
{
|
||||||
static char path[PATH_MAX_LENGTH];
|
static char path[PATH_MAX_LENGTH] = {0};
|
||||||
struct rarch_main_wrap *args =
|
struct rarch_main_wrap *args =
|
||||||
(struct rarch_main_wrap*)params_data;
|
(struct rarch_main_wrap*)params_data;
|
||||||
|
|
||||||
|
@ -50,10 +50,10 @@
|
|||||||
#define DEFAULT_PARTITION "hdd0:__common:pfs"
|
#define DEFAULT_PARTITION "hdd0:__common:pfs"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static char mountPoint[50];
|
|
||||||
static char mountString[10];
|
|
||||||
static char cwd[FILENAME_MAX];
|
|
||||||
static enum frontend_fork ps2_fork_mode = FRONTEND_FORK_NONE;
|
static enum frontend_fork ps2_fork_mode = FRONTEND_FORK_NONE;
|
||||||
|
static char cwd[FILENAME_MAX] = {0};
|
||||||
|
static char mountString[10] = {0};
|
||||||
|
static char mountPoint[50] = {0};
|
||||||
static enum HDD_MOUNT_STATUS hddMountStatus = HDD_MOUNT_INIT_STATUS_NOT_READY;
|
static enum HDD_MOUNT_STATUS hddMountStatus = HDD_MOUNT_INIT_STATUS_NOT_READY;
|
||||||
static enum HDD_INIT_STATUS hddStatus = HDD_INIT_STATUS_UNKNOWN;
|
static enum HDD_INIT_STATUS hddStatus = HDD_INIT_STATUS_UNKNOWN;
|
||||||
|
|
||||||
@ -265,7 +265,7 @@ static void frontend_ps2_get_env(int *argc, char *argv[],
|
|||||||
#ifndef IS_SALAMANDER
|
#ifndef IS_SALAMANDER
|
||||||
if (!string_is_empty(argv[1]))
|
if (!string_is_empty(argv[1]))
|
||||||
{
|
{
|
||||||
static char path[FILENAME_MAX];
|
static char path[FILENAME_MAX] = {0};
|
||||||
struct rarch_main_wrap *args =
|
struct rarch_main_wrap *args =
|
||||||
(struct rarch_main_wrap*)params_data;
|
(struct rarch_main_wrap*)params_data;
|
||||||
|
|
||||||
|
@ -81,8 +81,8 @@ PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER|THREAD_ATTR_VFPU);
|
|||||||
unsigned int sceLibcHeapSize = SCE_LIBC_SIZE;
|
unsigned int sceLibcHeapSize = SCE_LIBC_SIZE;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static char eboot_path[512];
|
static char eboot_path[512] = {0};
|
||||||
static char user_path[512];
|
static char user_path[512] = {0};
|
||||||
static enum frontend_fork psp_fork_mode = FRONTEND_FORK_NONE;
|
static enum frontend_fork psp_fork_mode = FRONTEND_FORK_NONE;
|
||||||
|
|
||||||
static void frontend_psp_get_env_settings(int *argc, char *argv[],
|
static void frontend_psp_get_env_settings(int *argc, char *argv[],
|
||||||
|
@ -124,7 +124,7 @@ static uint8_t g_platform_android_flags = 0;
|
|||||||
#define PROC_ACPI_SYSFS_AC_ADAPTER_PATH "/sys/class/power_supply/ACAD"
|
#define PROC_ACPI_SYSFS_AC_ADAPTER_PATH "/sys/class/power_supply/ACAD"
|
||||||
#define PROC_ACPI_SYSFS_BATTERY_PATH "/sys/class/power_supply"
|
#define PROC_ACPI_SYSFS_BATTERY_PATH "/sys/class/power_supply"
|
||||||
#define PROC_ACPI_AC_ADAPTER_PATH "/proc/acpi/ac_adapter"
|
#define PROC_ACPI_AC_ADAPTER_PATH "/proc/acpi/ac_adapter"
|
||||||
static char unix_cpu_model_name[64];
|
static char unix_cpu_model_name[64] = {0};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* /proc/meminfo parameters */
|
/* /proc/meminfo parameters */
|
||||||
@ -1366,7 +1366,7 @@ static void frontend_unix_get_env(int *argc,
|
|||||||
|
|
||||||
if (android_app->getStringExtra && jstr)
|
if (android_app->getStringExtra && jstr)
|
||||||
{
|
{
|
||||||
static char config_path[PATH_MAX_LENGTH];
|
static char config_path[PATH_MAX_LENGTH] = {0};
|
||||||
const char *argv = (*env)->GetStringUTFChars(env, jstr, 0);
|
const char *argv = (*env)->GetStringUTFChars(env, jstr, 0);
|
||||||
|
|
||||||
if (argv && *argv)
|
if (argv && *argv)
|
||||||
|
@ -59,7 +59,7 @@ static void frontend_xdk_get_environment_settings(int *argc, char *argv[],
|
|||||||
DWORD volume_device_type;
|
DWORD volume_device_type;
|
||||||
#endif
|
#endif
|
||||||
#ifndef IS_SALAMANDER
|
#ifndef IS_SALAMANDER
|
||||||
static char path[PATH_MAX_LENGTH];
|
static char path[PATH_MAX_LENGTH] = {0};
|
||||||
#if defined(_XBOX1)
|
#if defined(_XBOX1)
|
||||||
LAUNCH_DATA ptr;
|
LAUNCH_DATA ptr;
|
||||||
DWORD launch_type;
|
DWORD launch_type;
|
||||||
|
@ -73,19 +73,18 @@ Colormap g_x11_cmap;
|
|||||||
#ifdef HAVE_XF86VM
|
#ifdef HAVE_XF86VM
|
||||||
static XF86VidModeModeInfo desktop_mode;
|
static XF86VidModeModeInfo desktop_mode;
|
||||||
#endif
|
#endif
|
||||||
static XConfigureEvent g_x11_xce;
|
static bool xdg_screensaver_available = true;
|
||||||
|
static bool g_x11_has_focus = false;
|
||||||
|
static bool g_x11_true_full = false;
|
||||||
|
static XConfigureEvent g_x11_xce = {0};
|
||||||
static Atom XA_NET_WM_STATE;
|
static Atom XA_NET_WM_STATE;
|
||||||
static Atom XA_NET_WM_STATE_FULLSCREEN;
|
static Atom XA_NET_WM_STATE_FULLSCREEN;
|
||||||
static Atom XA_NET_MOVERESIZE_WINDOW;
|
static Atom XA_NET_MOVERESIZE_WINDOW;
|
||||||
static Atom g_x11_quit_atom;
|
static Atom g_x11_quit_atom;
|
||||||
static XIM g_x11_xim;
|
static XIM g_x11_xim;
|
||||||
static XIC g_x11_xic;
|
static XIC g_x11_xic;
|
||||||
|
|
||||||
static enum retro_key x11_keysym_lut[RETROK_LAST];
|
static enum retro_key x11_keysym_lut[RETROK_LAST];
|
||||||
|
|
||||||
static bool xdg_screensaver_available = true;
|
|
||||||
static bool g_x11_has_focus = false;
|
|
||||||
static bool g_x11_true_full = false;
|
|
||||||
|
|
||||||
static unsigned *x11_keysym_rlut = NULL;
|
static unsigned *x11_keysym_rlut = NULL;
|
||||||
static unsigned x11_keysym_rlut_size = 0;
|
static unsigned x11_keysym_rlut_size = 0;
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@
|
|||||||
/* TODO/FIXME - static globals */
|
/* TODO/FIXME - static globals */
|
||||||
static int psp2_model;
|
static int psp2_model;
|
||||||
static SceCtrlPortInfo old_ctrl_info, curr_ctrl_info;
|
static SceCtrlPortInfo old_ctrl_info, curr_ctrl_info;
|
||||||
static SceCtrlActuator actuators[DEFAULT_MAX_PADS];
|
static SceCtrlActuator actuators[DEFAULT_MAX_PADS] = {0};
|
||||||
|
|
||||||
#define LERP(p, f, t) ((((p * 10) * (t * 10)) / (f * 10)) / 10)
|
#define LERP(p, f, t) ((((p * 10) * (t * 10)) / (f * 10)) / 10)
|
||||||
#define AREA(lx, ly, rx, ry, x, y) (lx <= x && x < rx && ly <= y && y < ry)
|
#define AREA(lx, ly, rx, ry, x, y) (lx <= x && x < rx && ly <= y && y < ry)
|
||||||
@ -202,12 +202,12 @@ static int16_t psp_joypad_state(
|
|||||||
const uint32_t joyaxis = (binds[i].joyaxis != AXIS_NONE)
|
const uint32_t joyaxis = (binds[i].joyaxis != AXIS_NONE)
|
||||||
? binds[i].joyaxis : joypad_info->auto_binds[i].joyaxis;
|
? binds[i].joyaxis : joypad_info->auto_binds[i].joyaxis;
|
||||||
if (
|
if (
|
||||||
(uint16_t)joykey != NO_BTN
|
(uint16_t)joykey != NO_BTN
|
||||||
&& (pad_state[port_idx] & (UINT64_C(1) << (uint16_t)joykey))
|
&& (pad_state[port_idx] & (UINT64_C(1) << (uint16_t)joykey))
|
||||||
)
|
)
|
||||||
ret |= ( 1 << i);
|
ret |= ( 1 << i);
|
||||||
else if (joyaxis != AXIS_NONE &&
|
else if (joyaxis != AXIS_NONE &&
|
||||||
((float)abs(psp_joypad_axis_state(port_idx, joyaxis))
|
((float)abs(psp_joypad_axis_state(port_idx, joyaxis))
|
||||||
/ 0x8000) > joypad_info->axis_threshold)
|
/ 0x8000) > joypad_info->axis_threshold)
|
||||||
ret |= (1 << i);
|
ret |= (1 << i);
|
||||||
}
|
}
|
||||||
@ -272,7 +272,7 @@ static void psp_joypad_poll(void)
|
|||||||
SceCtrlData state_tmp;
|
SceCtrlData state_tmp;
|
||||||
unsigned i = player;
|
unsigned i = player;
|
||||||
#if defined(VITA)
|
#if defined(VITA)
|
||||||
unsigned p = (psp2_model == SCE_KERNEL_MODEL_VITATV)
|
unsigned p = (psp2_model == SCE_KERNEL_MODEL_VITATV)
|
||||||
? player + 1 : player;
|
? player + 1 : player;
|
||||||
if (curr_ctrl_info.port[p] == SCE_CTRL_TYPE_UNPAIRED)
|
if (curr_ctrl_info.port[p] == SCE_CTRL_TYPE_UNPAIRED)
|
||||||
continue;
|
continue;
|
||||||
@ -303,7 +303,7 @@ static void psp_joypad_poll(void)
|
|||||||
unsigned i;
|
unsigned i;
|
||||||
SceTouchData touch_surface = {0};
|
SceTouchData touch_surface = {0};
|
||||||
sceTouchPeek(input_backtouch_toggle
|
sceTouchPeek(input_backtouch_toggle
|
||||||
? SCE_TOUCH_PORT_FRONT
|
? SCE_TOUCH_PORT_FRONT
|
||||||
: SCE_TOUCH_PORT_BACK,
|
: SCE_TOUCH_PORT_BACK,
|
||||||
&touch_surface, 1);
|
&touch_surface, 1);
|
||||||
|
|
||||||
|
@ -198,7 +198,7 @@ struct audio_mixer_voice
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* TODO/FIXME - static globals */
|
/* TODO/FIXME - static globals */
|
||||||
static struct audio_mixer_voice s_voices[AUDIO_MIXER_MAX_VOICES];
|
static struct audio_mixer_voice s_voices[AUDIO_MIXER_MAX_VOICES] = {0};
|
||||||
static unsigned s_rate = 0;
|
static unsigned s_rate = 0;
|
||||||
|
|
||||||
static void audio_mixer_release(audio_mixer_voice_t* voice);
|
static void audio_mixer_release(audio_mixer_voice_t* voice);
|
||||||
|
@ -115,8 +115,8 @@ int inet_pton(int af, const char *src, void *dst)
|
|||||||
#elif defined(_XBOX)
|
#elif defined(_XBOX)
|
||||||
struct hostent *gethostbyname(const char *name)
|
struct hostent *gethostbyname(const char *name)
|
||||||
{
|
{
|
||||||
static struct in_addr addr;
|
static struct in_addr addr = {0};
|
||||||
static struct hostent he;
|
static struct hostent he = {0};
|
||||||
WSAEVENT event;
|
WSAEVENT event;
|
||||||
XNDNS *dns = NULL;
|
XNDNS *dns = NULL;
|
||||||
struct hostent *ret = NULL;
|
struct hostent *ret = NULL;
|
||||||
@ -180,8 +180,8 @@ uint32_t inet_addr(const char *cp)
|
|||||||
|
|
||||||
struct hostent *gethostbyname(const char *name)
|
struct hostent *gethostbyname(const char *name)
|
||||||
{
|
{
|
||||||
static struct SceNetInAddr addr;
|
static struct SceNetInAddr addr = {0};
|
||||||
static struct hostent he;
|
static struct hostent he = {0};
|
||||||
int rid;
|
int rid;
|
||||||
struct hostent *ret = NULL;
|
struct hostent *ret = NULL;
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* TODO/FIXME - static global variable */
|
/* TODO/FIXME - static global variable */
|
||||||
static cdrom_toc_t vfs_cdrom_toc;
|
static cdrom_toc_t vfs_cdrom_toc = {0};
|
||||||
|
|
||||||
const cdrom_toc_t* retro_vfs_file_get_cdrom_toc(void)
|
const cdrom_toc_t* retro_vfs_file_get_cdrom_toc(void)
|
||||||
{
|
{
|
||||||
@ -93,8 +93,8 @@ int64_t retro_vfs_file_seek_cdrom(
|
|||||||
break;
|
break;
|
||||||
case SEEK_END:
|
case SEEK_END:
|
||||||
{
|
{
|
||||||
ssize_t pregap_lba_len = (vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].audio
|
ssize_t pregap_lba_len = (vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].audio
|
||||||
? 0
|
? 0
|
||||||
: (vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].lba - vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].lba_start));
|
: (vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].lba - vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].lba_start));
|
||||||
ssize_t lba_len = vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].track_size - pregap_lba_len;
|
ssize_t lba_len = vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].track_size - pregap_lba_len;
|
||||||
#ifdef CDROM_DEBUG
|
#ifdef CDROM_DEBUG
|
||||||
@ -153,7 +153,7 @@ void retro_vfs_file_open_cdrom(
|
|||||||
|
|
||||||
stream->cdrom.cur_track = 1;
|
stream->cdrom.cur_track = 1;
|
||||||
|
|
||||||
if ( !string_is_equal_noncase(ext, "cue")
|
if ( !string_is_equal_noncase(ext, "cue")
|
||||||
&& !string_is_equal_noncase(ext, "bin"))
|
&& !string_is_equal_noncase(ext, "bin"))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -231,7 +231,7 @@ void retro_vfs_file_open_cdrom(
|
|||||||
size_t path_len = strlen(path);
|
size_t path_len = strlen(path);
|
||||||
const char *ext = path_get_extension(path);
|
const char *ext = path_get_extension(path);
|
||||||
|
|
||||||
if ( !string_is_equal_noncase(ext, "cue")
|
if ( !string_is_equal_noncase(ext, "cue")
|
||||||
&& !string_is_equal_noncase(ext, "bin"))
|
&& !string_is_equal_noncase(ext, "bin"))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -378,7 +378,7 @@ int64_t retro_vfs_file_read_cdrom(libretro_vfs_implementation_file *stream,
|
|||||||
|
|
||||||
if (string_is_equal_noncase(ext, "cue"))
|
if (string_is_equal_noncase(ext, "cue"))
|
||||||
{
|
{
|
||||||
if ((int64_t)len >= (int64_t)stream->cdrom.cue_len
|
if ((int64_t)len >= (int64_t)stream->cdrom.cue_len
|
||||||
- stream->cdrom.byte_pos)
|
- stream->cdrom.byte_pos)
|
||||||
len = stream->cdrom.cue_len - stream->cdrom.byte_pos - 1;
|
len = stream->cdrom.cue_len - stream->cdrom.byte_pos - 1;
|
||||||
#ifdef CDROM_DEBUG
|
#ifdef CDROM_DEBUG
|
||||||
@ -403,17 +403,17 @@ int64_t retro_vfs_file_read_cdrom(libretro_vfs_implementation_file *stream,
|
|||||||
unsigned char rframe = 0;
|
unsigned char rframe = 0;
|
||||||
size_t skip = stream->cdrom.byte_pos % 2352;
|
size_t skip = stream->cdrom.byte_pos % 2352;
|
||||||
|
|
||||||
if (stream->cdrom.byte_pos >=
|
if (stream->cdrom.byte_pos >=
|
||||||
vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].track_bytes)
|
vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].track_bytes)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (stream->cdrom.byte_pos + len >
|
if (stream->cdrom.byte_pos + len >
|
||||||
vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].track_bytes)
|
vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].track_bytes)
|
||||||
len -= (stream->cdrom.byte_pos + len)
|
len -= (stream->cdrom.byte_pos + len)
|
||||||
- vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].track_bytes;
|
- vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].track_bytes;
|
||||||
|
|
||||||
cdrom_lba_to_msf(stream->cdrom.cur_lba, &min, &sec, &frame);
|
cdrom_lba_to_msf(stream->cdrom.cur_lba, &min, &sec, &frame);
|
||||||
cdrom_lba_to_msf(stream->cdrom.cur_lba
|
cdrom_lba_to_msf(stream->cdrom.cur_lba
|
||||||
- vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].lba,
|
- vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].lba,
|
||||||
&rmin, &rsec, &rframe);
|
&rmin, &rsec, &rframe);
|
||||||
|
|
||||||
@ -452,8 +452,8 @@ int64_t retro_vfs_file_read_cdrom(libretro_vfs_implementation_file *stream,
|
|||||||
}
|
}
|
||||||
|
|
||||||
stream->cdrom.byte_pos += len;
|
stream->cdrom.byte_pos += len;
|
||||||
stream->cdrom.cur_lba =
|
stream->cdrom.cur_lba =
|
||||||
vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].lba
|
vfs_cdrom_toc.track[stream->cdrom.cur_track - 1].lba
|
||||||
+ (stream->cdrom.byte_pos / 2352);
|
+ (stream->cdrom.byte_pos / 2352);
|
||||||
|
|
||||||
cdrom_lba_to_msf(stream->cdrom.cur_lba,
|
cdrom_lba_to_msf(stream->cdrom.cur_lba,
|
||||||
|
@ -61,7 +61,7 @@ typedef struct
|
|||||||
unsigned nc;
|
unsigned nc;
|
||||||
} webdav_state_t;
|
} webdav_state_t;
|
||||||
|
|
||||||
static webdav_state_t webdav_driver_st;
|
static webdav_state_t webdav_driver_st = {0};
|
||||||
|
|
||||||
webdav_state_t *webdav_state_get_ptr(void)
|
webdav_state_t *webdav_state_get_ptr(void)
|
||||||
{
|
{
|
||||||
|
@ -35,7 +35,7 @@ const cloud_sync_driver_t *cloud_sync_drivers[] = {
|
|||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
static cloud_sync_driver_state_t cloud_sync_driver_st;
|
static cloud_sync_driver_state_t cloud_sync_driver_st = {0};
|
||||||
|
|
||||||
cloud_sync_driver_state_t *cloud_sync_state_get_ptr(void)
|
cloud_sync_driver_state_t *cloud_sync_state_get_ptr(void)
|
||||||
{
|
{
|
||||||
|
1008
network/discord.c
1008
network/discord.c
File diff suppressed because it is too large
Load Diff
@ -209,7 +209,7 @@ const mitm_server_t netplay_mitm_server_list[NETPLAY_MITM_SERVERS] = {
|
|||||||
{ "custom", MENU_ENUM_LABEL_VALUE_NETPLAY_MITM_SERVER_LOCATION_CUSTOM }
|
{ "custom", MENU_ENUM_LABEL_VALUE_NETPLAY_MITM_SERVER_LOCATION_CUSTOM }
|
||||||
};
|
};
|
||||||
|
|
||||||
static net_driver_state_t networking_driver_st;
|
static net_driver_state_t networking_driver_st = {0};
|
||||||
|
|
||||||
net_driver_state_t *networking_state_get_ptr(void)
|
net_driver_state_t *networking_state_get_ptr(void)
|
||||||
{
|
{
|
||||||
|
@ -91,7 +91,7 @@ struct netplay_crc_scan_data
|
|||||||
char hostname[512];
|
char hostname[512];
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct netplay_crc_scan_state scan_state;
|
static struct netplay_crc_scan_state scan_state = {0};
|
||||||
|
|
||||||
static bool find_content_by_crc(playlist_config_t *playlist_config,
|
static bool find_content_by_crc(playlist_config_t *playlist_config,
|
||||||
const struct string_list *playlists, uint32_t crc,
|
const struct string_list *playlists, uint32_t crc,
|
||||||
|
@ -87,7 +87,7 @@ static void task_netplay_lan_scan_callback(retro_task_t *task,
|
|||||||
|
|
||||||
bool task_push_netplay_lan_scan(void (*cb)(const void*), unsigned timeout)
|
bool task_push_netplay_lan_scan(void (*cb)(const void*), unsigned timeout)
|
||||||
{
|
{
|
||||||
static struct netplay_lan_scan_data data;
|
static struct netplay_lan_scan_data data = {0};
|
||||||
retro_task_t *task;
|
retro_task_t *task;
|
||||||
|
|
||||||
/* Do not run more than one LAN scan task at a time. */
|
/* Do not run more than one LAN scan task at a time. */
|
||||||
|
@ -163,8 +163,8 @@ done:
|
|||||||
|
|
||||||
static void task_netplay_nat_traversal_handler(retro_task_t *task)
|
static void task_netplay_nat_traversal_handler(retro_task_t *task)
|
||||||
{
|
{
|
||||||
static struct natt_device device;
|
|
||||||
static struct natt_discovery discovery = {-1, -1};
|
static struct natt_discovery discovery = {-1, -1};
|
||||||
|
static struct natt_device device = {0};
|
||||||
struct nat_traversal_data *data = (struct nat_traversal_data*)task->task_data;
|
struct nat_traversal_data *data = (struct nat_traversal_data*)task->task_data;
|
||||||
|
|
||||||
/* Try again on the next call. */
|
/* Try again on the next call. */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user