Compare commits

...
54 Commits
Author SHA1 Message Date
github-actions 69a4f0ea1e Fetch translations from Crowdin 2025-11-20 00:17:08 +00:00
Eric Warmenhoven cc335202a8 Add scanner support for Philips CD-i disc images (#18424)
CD-i discs have a unique quirk: they store data in tracks labeled as
AUDIO in both CUE and CHD formats. The scanner normally skips AUDIO
tracks when looking for data, causing CD-i games to never match the
database.
2025-11-19 16:18:06 +01:00
Craig 12eebedf1f webOS: fix logging, pass mouse buttons, gamepad, function keys to RetroArch (#18419)
* webOS: fix logging crash on startup

* webOS: fix for webOS 8.3 - 10+ to receive all mouse/pad/keyboard keys
2025-11-19 16:17:41 +01:00
Joe Osborn fbc972b39e Fix compressed size calculation for the zstd condition (#18420)
There was a variable shadowing issue.

I also fixed a few clang analyzer warnings.
2025-11-19 16:16:44 +01:00
Eric Warmenhoven 97dea65a8c Fix a couple minor Saturn scanning bugs (#18421) 2025-11-19 16:16:10 +01:00
zoltanvb 8c339fd900 Do not use size hint for CHD for now. 2025-11-19 07:33:15 -05:00
sonninnos 931e3fcabd Fix core suggestion with manual core load (#18423) 2025-11-19 06:17:40 +02:00
github-actions 2e8b001dd9 Fetch translations from Crowdin 2025-11-19 00:17:24 +00:00
Eric Warmenhoven 1efcc55bff Android: Add HAVE_CHEEVOS_RVZ 2025-11-18 14:11:47 -05:00
sonninnos 39b75272f3 XMB: Left thumbnail top align adjustment 2025-11-18 17:13:03 +02:00
sonninnos 59b05fa034 Android: Final missing zstd piece 2025-11-18 16:26:46 +02:00
sonninnos d95fbb2655 Android: zstd include path fix 2025-11-18 16:20:05 +02:00
sonninnos 9c2f39a129 Android: Add zstd include dirs 2025-11-18 16:10:08 +02:00
sonninnos 2d9f6a916a Android: Add HAVE_ZSTD 2025-11-18 15:53:58 +02:00
Eric Warmenhoven 447daab3b2 minor cleanup of now-unused config value 2025-11-17 22:15:20 -05:00
Eric Warmenhoven 3ceed07cd0 Merge remote-tracking branch 'lucascanero/enable-cloudsync-libnx' into warmenhoven/dev/nx 2025-11-17 22:10:01 -05:00
Eric Warmenhoven d848490295 add cheevos_rvz 2025-11-17 20:58:08 -05:00
github-actions 37be83913b Fetch translations from Crowdin 2025-11-18 00:17:18 +00:00
libretroadmin b5e2956a5a Fix uninitialized variable warning 2025-11-18 00:15:48 +01:00
Joe Osborn cf30bc29bb fix -Wshorten64-to-32 warnings in bsvmovie (#18416) 2025-11-17 20:22:42 +01:00
libretroadmin a609b709eb Bump to version 1.22.2 2025-11-17 14:22:57 +01:00
sonninnos 83c663e5e9 Revert "Shorten stb_vorbis.h"
This reverts commit 53dfaa1f85.
2025-11-17 08:07:20 +02:00
sonninnos dd8973f1e6 Revert "Simplify stb_vorbis.h"
This reverts commit 7fc802698a.
2025-11-17 08:07:11 +02:00
sonninnos f382d8d321 XMB: Left thumbnail + handheld mode fixes (#18414) 2025-11-17 08:05:42 +02:00
github-actions 5ed53646b9 Fetch translations from Crowdin 2025-11-17 00:17:18 +00:00
zoltanvb cf3c678de5 Fix Enter not working in menu on Android keyboards (#18405) 2025-11-16 20:59:32 +01:00
zoltanvb acd3fa1172 Change size to 64-bit (#18410)
Several rom sizes could exceed 32-bit. Database uses uint64_t, so let's align.
2025-11-16 20:59:18 +01:00
github-actions 72b7f058a3 Fetch translations from Crowdin 2025-11-16 00:17:59 +00:00
libretroadmin 9f9a984b99 Use strlcpy instead of strncpy in places 2025-11-15 16:28:41 +01:00
Craig 1be2ba8d20 Replace single strncpy with strlcpy in features_cpu (#18400) 2025-11-15 13:39:30 +01:00
libretroadmin 01cc7b3104 Revert "Further reduce size of dr_flac - only include it once in C file"
This reverts commit 1e66e9d16b.
2025-11-15 03:48:18 +01:00
libretroadmin 0a30809931 Revert "Compile stb_rect_pack/stb_truetype once separately instead"
This reverts commit 85245e5514.
2025-11-15 03:47:59 +01:00
libretroadmin 8675fcd79a Revert "Buildfix"
This reverts commit 0e14bba04c.
2025-11-15 03:47:38 +01:00
libretroadmin 4668afca71 Revert "Need to use RETRO_BEGIN_DECLS/RETRO_END_DECL for MSVC C++"
This reverts commit 81555b9da6.
2025-11-15 03:47:29 +01:00
libretroadmin 81555b9da6 Need to use RETRO_BEGIN_DECLS/RETRO_END_DECL for MSVC C++
backwards compatibility
2025-11-15 03:34:13 +01:00
libretroadmin 0e14bba04c Buildfix 2025-11-15 03:29:44 +01:00
libretroadmin 85245e5514 Compile stb_rect_pack/stb_truetype once separately instead
of including them in several files
2025-11-15 03:21:49 +01:00
libretroadmin 1e66e9d16b Further reduce size of dr_flac - only include it once in C file
instead of including it at least twice
2025-11-15 02:46:51 +01:00
libretroadmin b8372337a0 Slim down on dr_mp3 2025-11-15 02:37:41 +01:00
libretroadmin b1e10faa01 (dr_flac) Cleanups 2025-11-15 02:20:22 +01:00
libretroadmin a15217dbaf Bump version 2025-11-15 01:56:28 +01:00
libretroadmin 6d5672c669 (drflac) Slim down dr_flac 2025-11-15 01:49:07 +01:00
github-actions 4fd47962c8 Fetch translations from Crowdin 2025-11-15 00:15:44 +00:00
Eric Warmenhoven 749bc23ecd fix null pointer crash in xmb when scrolling 2025-11-14 18:41:06 -05:00
libretroadmin 2a08e0104d Slim down stb_rect_pack/stb_truetype 2025-11-14 23:15:07 +01:00
libretroadmin 7fc802698a Simplify stb_vorbis.h 2025-11-14 22:05:25 +01:00
libretroadmin 53dfaa1f85 Shorten stb_vorbis.h 2025-11-14 21:43:19 +01:00
libretroadmin 3df2dfa095 Buildfix stb_vorbis.h 2025-11-14 20:04:34 +01:00
libretroadmin 906dbd8cc0 Recommit file 2025-11-14 19:40:38 +01:00
libretroadmin 28783c657a Remove if 0 2025-11-14 19:37:58 +01:00
libretroadmin b5e767acaa Remove if 0 2025-11-14 19:05:13 +01:00
Lucas f97d6c9d63 improve cloudsync settings and missing labels 2025-11-09 01:42:19 +00:00
Lucas Cañero 5048003e20 Add cloudsync "sync now" button and related settings (cloudsync startup) 2025-11-07 21:55:33 +00:00
Lucas Cañero 09a7ec737d enable CloudSync and SSL for libnx 2025-11-07 21:54:27 +00:00
156 changed files with 4821 additions and 10449 deletions

No files matched your search

+1 -1
View File
@@ -1,6 +1,6 @@
# Future
# 1.22.0
# 1.22.1
- ANDROID: OnNewIntent handler to allow launchers start new content without closing first
- ANDROID: Use app-specific storage for Google Play builds of RetroArch
- ANDROID: Implement support for the Storage Access Framework, to allow the user to mount most directories1 from internal storage, the SD card, other removable storage devices and any document providers provided by other Android apps on the current device.
+3 -1
View File
@@ -57,6 +57,8 @@ HAVE_CHD = 1
HAVE_STB_VORBIS = 1
HAVE_IBXM = 1
HAVE_CORE_INFO_CACHE = 1
HAVE_CLOUD_SYNC = 1
HAVE_SSL = 1
# RetroArch libnx useful flags
HAVE_THREADS = 1
@@ -148,7 +150,7 @@ LDFLAGS = -specs=$(DEVKITPRO)/libnx/switch.specs $(ARCH) -Wl,--allow-multiple-de
# add things from Makefile.common
CFLAGS += $(DEF_FLAGS)
LIBS := -lswresample -lavformat -lavcodec -lavutil -lswscale -lstdc++ -lbz2 -lpng -lz -lnx -lvpx -lopus -llzma -lm
LIBS := -lswresample -lavformat -lavcodec -lavutil -lswscale -lstdc++ -lbz2 -lpng -lz -lnx -lvpx -lopus -llzma -lmbedtls -lmbedx509 -lmbedcrypto -lnx -lm
ifeq ($(HAVE_OPENGL), 1)
LIBS := -lEGL -lglapi -ldrm_nouveau $(LIBS)
+4 -1
View File
@@ -224,7 +224,10 @@ define APPINFO
"main": "retroarch",
"iconColor": "#333333",
"type": "native",
"appDescription": "Emulation frontend"
"appDescription": "Emulation frontend",
"cloudgame_active": true,
"useAllMouseButtons": true,
"useAllKeyboardKeys": true
}
endef
export APPINFO
+4
View File
@@ -149,6 +149,10 @@ enum event_command
CMD_EVENT_VIDEO_SET_ASPECT_RATIO,
/* Restarts RetroArch. */
CMD_EVENT_RESTART_RETROARCH,
#ifdef HAVE_CLOUDSYNC
/* Trigger cloud sync */
CMD_EVENT_CLOUD_SYNC,
#endif
/* Shutdown the OS */
CMD_EVENT_SHUTDOWN,
/* Reboot the OS */
+3
View File
@@ -2612,6 +2612,9 @@ static struct config_uint_setting *populate_settings_uint(
#ifdef HAVE_NETWORKGAMEPAD
SETTING_UINT("network_remote_base_port", &settings->uints.network_remote_base_port, true, DEFAULT_NETWORK_REMOTE_BASE_PORT, false);
#endif
#ifdef HAVE_CLOUDSYNC
SETTING_UINT("cloud_sync_sync_mode", &settings->uints.cloud_sync_sync_mode, true, CLOUD_SYNC_MODE_AUTOMATIC, false);
#endif
#ifdef HAVE_LANGEXTRA
SETTING_UINT("user_language", msg_hash_get_uint(MSG_HASH_USER_LANGUAGE), true, frontend_driver_get_user_language(), false);
+8
View File
@@ -89,6 +89,13 @@ enum override_type
OVERRIDE_GAME
};
enum cloud_sync_mode_type
{
CLOUD_SYNC_MODE_AUTOMATIC = 0,
CLOUD_SYNC_MODE_MANUAL,
CLOUD_SYNC_MODE_LAST
};
enum settings_glob_flags
{
SETTINGS_FLG_MODIFIED = (1 << 0),
@@ -238,6 +245,7 @@ typedef struct settings
unsigned network_cmd_port;
unsigned network_remote_base_port;
unsigned keymapper_port;
unsigned cloud_sync_sync_mode;
unsigned video_window_opacity;
unsigned crt_switch_resolution;
unsigned crt_switch_resolution_super;
@@ -33,6 +33,7 @@
#include <libretro.h>
#include <clamping.h>
#include <compat/strl.h>
#include <retro_miscellaneous.h>
#include <sys/mman.h>
@@ -607,9 +608,9 @@ RETRO_API void VIDEOPROC_CORE_PREFIX(retro_get_system_av_info)(struct retro_syst
info->geometry.base_height = video_format.fmt.pix.height;
if(capture_resolution.value != NULL)
strncpy(video_capture_resolution, capture_resolution.value, ENVVAR_BUFLEN-1);
strlcpy(video_capture_resolution, capture_resolution.value, sizeof(video_capture_resolution));
else
strncpy(video_capture_resolution, "auto", ENVVAR_BUFLEN-1);
strlcpy(video_capture_resolution, "auto", sizeof(video_capture_resolution));
if (strcmp(video_capture_resolution, "auto") != 0)
{
@@ -1047,7 +1048,7 @@ RETRO_API void VIDEOPROC_CORE_PREFIX(retro_run)(void)
}
if (frametimes.value != NULL)
strncpy(video_frame_times, frametimes.value, ENVVAR_BUFLEN-1);
strlcpy(video_frame_times, frametimes.value, sizeof(video_frame_times));
}
VIDEOPROC_CORE_PREFIX(input_poll_cb)();
@@ -1217,18 +1218,18 @@ RETRO_API bool VIDEOPROC_CORE_PREFIX(retro_load_game)(const struct retro_game_in
close_devices();
return false;
}
strncpy(video_device, videodev.value, ENVVAR_BUFLEN-1);
strlcpy(video_device, videodev.value, sizeof(video_device));
/* Audio device is optional... */
VIDEOPROC_CORE_PREFIX(environment_cb)(RETRO_ENVIRONMENT_GET_VARIABLE, &audiodev);
if (audiodev.value != NULL)
strncpy(audio_device, audiodev.value, ENVVAR_BUFLEN-1);
strlcpy(audio_device, audiodev.value, sizeof(audio_device));
VIDEOPROC_CORE_PREFIX(environment_cb)(RETRO_ENVIRONMENT_GET_VARIABLE, &capture_resolution);
if(capture_resolution.value != NULL)
strncpy(video_capture_resolution, capture_resolution.value, ENVVAR_BUFLEN-1);
strlcpy(video_capture_resolution, capture_resolution.value, sizeof(video_capture_resolution));
else
strncpy(video_capture_resolution, "auto", ENVVAR_BUFLEN-1);
strlcpy(video_capture_resolution, "auto", sizeof(video_capture_resolution));
VIDEOPROC_CORE_PREFIX(environment_cb)(RETRO_ENVIRONMENT_GET_VARIABLE, &capture_mode);
VIDEOPROC_CORE_PREFIX(environment_cb)(RETRO_ENVIRONMENT_GET_VARIABLE, &output_mode);
@@ -1237,12 +1238,12 @@ RETRO_API bool VIDEOPROC_CORE_PREFIX(retro_load_game)(const struct retro_game_in
close_devices();
return false;
}
strncpy(video_capture_mode, capture_mode.value, ENVVAR_BUFLEN-1);
strncpy(video_output_mode, output_mode.value, ENVVAR_BUFLEN-1);
strlcpy(video_capture_mode, capture_mode.value, sizeof(video_capture_mode));
strlcpy(video_output_mode, output_mode.value, sizeof(video_output_mode));
VIDEOPROC_CORE_PREFIX(environment_cb)(RETRO_ENVIRONMENT_GET_VARIABLE, &frame_times);
if (frame_times.value != NULL)
strncpy(video_frame_times, frame_times.value, ENVVAR_BUFLEN-1);
strlcpy(video_frame_times, frame_times.value, sizeof(video_frame_times));
if (strcmp(video_device, "dummy") == 0)
{
@@ -1499,8 +1500,8 @@ RETRO_API bool VIDEOPROC_CORE_PREFIX(retro_load_game)(const struct retro_game_in
RETRO_API void VIDEOPROC_CORE_PREFIX(retro_unload_game)(void)
{
struct v4l2_requestbuffers reqbufs;
int i;
struct v4l2_requestbuffers reqbufs;
#ifdef HAVE_ALSA
if (audio_handle != NULL)
+1 -1
View File
@@ -718,7 +718,7 @@ static int database_cursor_iterate(libretrodb_cursor_t *cur,
else if (string_is_equal(str, "analog"))
db_info->analog_supported = (int)val->val.uint_;
else if (string_is_equal(str, "size"))
db_info->size = (unsigned)val->val.uint_;
db_info->size = (uint64_t)val->val.uint_;
else if (string_is_equal(str, "crc"))
{
switch (val->val.binary.len)
+1 -1
View File
@@ -123,7 +123,7 @@ typedef struct
int rumble_supported;
int coop_supported;
uint32_t crc32;
unsigned size;
uint64_t size;
unsigned famitsu_magazine_rating;
unsigned edge_magazine_rating;
unsigned edge_magazine_issue;
+1 -1
View File
@@ -1,4 +1,4 @@
# 1.22.0
# 1.22.1
- ANDROID: OnNewIntent handler to allow launchers start new content without closing first
- ANDROID: Use app-specific storage for Google Play builds of RetroArch
- ANDROID: Implement support for the Storage Access Framework, to allow the user to mount most directories1 from internal storage, the SD card, other removable storage devices and any document providers provided by other Android apps on the current device.
+365 -4151
View File
File diff suppressed because it is too large. Load diff
+2556 -2755
View File
File diff suppressed because it is too large. Load diff
-4
View File
@@ -65,10 +65,6 @@
#if defined (__wiiu__)
#define DEFAULT_CACHE_PAGES 512
#define DEFAULT_SECTORS_PAGE 128
#if 0
#define USE_LWP_LOCK
#define USE_RTC_TIME
#endif
#elif defined (__wii__)
#define DEFAULT_CACHE_PAGES 4
#define DEFAULT_SECTORS_PAGE 64
+5 -12
View File
@@ -465,7 +465,7 @@ bool _FAT_directory_getVolumeLabel (PARTITION* partition, char *label)
label[11]='\0';
end = false;
/* this entry should be among the first 3 entries in the root directory table,
/* this entry should be among the first 3 entries in the root directory table,
* if not, then system can have trouble displaying the right volume label */
while(!end)
@@ -517,7 +517,7 @@ bool _FAT_directory_entryFromPosition (PARTITION* partition, DIR_ENTRY* entry)
&& (entryStart.sector == entryEnd.sector)
&& (entryStart.offset == entryEnd.offset))
{
/* Copy the entry data and stop, since this is the
/* Copy the entry data and stop, since this is the
* last section of the directory entry */
memcpy (entry->entryData, entryData, DIR_ENTRY_DATA_SIZE);
finished = true;
@@ -660,7 +660,7 @@ bool _FAT_directory_entryFromPath (PARTITION* partition, DIR_ENTRY* entry, const
while (pathPosition[0] == DIR_SEPARATOR)
pathPosition++;
/* The requested directory was found */
if (pathPosition >= pathEnd)
if (pathPosition >= pathEnd)
found = true;
else
found = false;
@@ -953,13 +953,6 @@ bool _FAT_directory_addEntry (PARTITION* partition, DIR_ENTRY* entry, uint32_t d
for (i = strlen (entry->filename) - 1; (i >= 0) && (entry->filename[i] == ' '); --i)
entry->filename[i] = '\0';
#if 0
/* Remove leading spaces */
for (i = 0; entry->filename[i] == ' '; ++i) ;
if (i > 0)
memmove (entry->filename, entry->filename + i, strlen (entry->filename + i));
#endif
/* Make sure the filename is not 0 length */
if (strnlen (entry->filename, NAME_MAX) < 1)
return false;
@@ -1007,9 +1000,9 @@ bool _FAT_directory_addEntry (PARTITION* partition, DIR_ENTRY* entry, uint32_t d
/* It's a long filename with an alias */
entrySize = ((lfnLen + LFN_ENTRY_LENGTH - 1) / LFN_ENTRY_LENGTH) + 1;
/* Generate full alias for all cases except when
/* Generate full alias for all cases except when
* the alias is simply an upper case version of the LFN
* and there isn't already a file with that name
* and there isn't already a file with that name
*/
if (strncasecmp (alias, entry->filename, MAX_ALIAS_LENGTH) != 0 ||
_FAT_directory_entryExists (partition, alias, dirCluster))
-521
View File
@@ -90,21 +90,6 @@
* it can reduce code size in some embedded targets.
*/
#if 0
#define MBEDTLS_NO_UDBL_DIVISION
#endif
/**
* \def MBEDTLS_HAVE_SSE2
*
* CPU supports SSE2 instruction set.
*
* Uncomment if the CPU supports SSE2 (IA-32 specific).
*/
#if 0
#define MBEDTLS_HAVE_SSE2
#endif
/**
* \def MBEDTLS_HAVE_TIME_DATE
*
@@ -127,184 +112,6 @@
* \{
*/
/**
* \def MBEDTLS_AES_ALT
*
* MBEDTLS__MODULE_NAME__ALT: Uncomment a macro to let mbed TLS use your
* alternate core implementation of a symmetric crypto, an arithmetic or hash
* module (e.g. platform specific assembly optimized implementations). Keep
* in mind that the function prototypes should remain the same.
*
* This replaces the whole module. If you only want to replace one of the
* functions, use one of the MBEDTLS__FUNCTION_NAME__ALT flags.
*
* Example: In case you uncomment MBEDTLS_AES_ALT, mbed TLS will no longer
* provide the "struct mbedtls_aes_context" definition and omit the base
* function declarations and implementations. "aes_alt.h" will be included from
* "aes.h" to include the new function definitions.
*
* Uncomment a macro to enable alternate implementation of the corresponding
* module.
*/
#if 0
#define MBEDTLS_AES_ALT
#define MBEDTLS_ARC4_ALT
#define MBEDTLS_BLOWFISH_ALT
#define MBEDTLS_CAMELLIA_ALT
#define MBEDTLS_DES_ALT
#define MBEDTLS_XTEA_ALT
#define MBEDTLS_MD2_ALT
#define MBEDTLS_MD4_ALT
#define MBEDTLS_MD5_ALT
#define MBEDTLS_RIPEMD160_ALT
#define MBEDTLS_SHA1_ALT
#define MBEDTLS_SHA256_ALT
#define MBEDTLS_SHA512_ALT
#endif
/*
* When replacing the elliptic curve module, pleace consider, that it is
* implemented with two .c files:
* - ecp.c
* - ecp_curves.c
* You can replace them very much like all the other MBEDTLS__MODULE_NAME__ALT
* macros as described above. The only difference is that you have to make sure
* that you provide functionality for both .c files.
*/
#if 0
#define MBEDTLS_ECP_ALT
#endif
/**
* \def MBEDTLS_MD2_PROCESS_ALT
*
* MBEDTLS__FUNCTION_NAME__ALT: Uncomment a macro to let mbed TLS use you
* alternate core implementation of symmetric crypto or hash function. Keep in
* mind that function prototypes should remain the same.
*
* This replaces only one function. The header file from mbed TLS is still
* used, in contrast to the MBEDTLS__MODULE_NAME__ALT flags.
*
* Example: In case you uncomment MBEDTLS_SHA256_PROCESS_ALT, mbed TLS will
* no longer provide the mbedtls_sha1_process() function, but it will still provide
* the other function (using your mbedtls_sha1_process() function) and the definition
* of mbedtls_sha1_context, so your implementation of mbedtls_sha1_process must be compatible
* with this definition.
*
* \note Because of a signature change, the core AES encryption and decryption routines are
* currently named mbedtls_aes_internal_encrypt and mbedtls_aes_internal_decrypt,
* respectively. When setting up alternative implementations, these functions should
* be overriden, but the wrapper functions mbedtls_aes_decrypt and mbedtls_aes_encrypt
* must stay untouched.
*
* \note If you use the AES_xxx_ALT macros, then is is recommended to also set
* MBEDTLS_AES_ROM_TABLES in order to help the linker garbage-collect the AES
* tables.
*
* Uncomment a macro to enable alternate implementation of the corresponding
* function.
*/
#if 0
#define MBEDTLS_MD2_PROCESS_ALT
#define MBEDTLS_MD4_PROCESS_ALT
#define MBEDTLS_MD5_PROCESS_ALT
#define MBEDTLS_RIPEMD160_PROCESS_ALT
#define MBEDTLS_SHA1_PROCESS_ALT
#define MBEDTLS_SHA256_PROCESS_ALT
#define MBEDTLS_SHA512_PROCESS_ALT
#define MBEDTLS_DES_SETKEY_ALT
#define MBEDTLS_DES_CRYPT_ECB_ALT
#define MBEDTLS_DES3_CRYPT_ECB_ALT
#define MBEDTLS_AES_SETKEY_ENC_ALT
#define MBEDTLS_AES_SETKEY_DEC_ALT
#define MBEDTLS_AES_ENCRYPT_ALT
#define MBEDTLS_AES_DECRYPT_ALT
#endif
/**
* \def MBEDTLS_ECP_INTERNAL_ALT
*
* Expose a part of the internal interface of the Elliptic Curve Point module.
*
* MBEDTLS_ECP__FUNCTION_NAME__ALT: Uncomment a macro to let mbed TLS use your
* alternative core implementation of elliptic curve arithmetic. Keep in mind
* that function prototypes should remain the same.
*
* This partially replaces one function. The header file from mbed TLS is still
* used, in contrast to the MBEDTLS_ECP_ALT flag. The original implementation
* is still present and it is used for group structures not supported by the
* alternative.
*
* Any of these options become available by defining MBEDTLS_ECP_INTERNAL_ALT
* and implementing the following functions:
* unsigned char mbedtls_internal_ecp_grp_capable(
* const mbedtls_ecp_group *grp )
* int mbedtls_internal_ecp_init( const mbedtls_ecp_group *grp )
* void mbedtls_internal_ecp_deinit( const mbedtls_ecp_group *grp )
* The mbedtls_internal_ecp_grp_capable function should return 1 if the
* replacement functions implement arithmetic for the given group and 0
* otherwise.
* The functions mbedtls_internal_ecp_init and mbedtls_internal_ecp_deinit are
* called before and after each point operation and provide an opportunity to
* implement optimized set up and tear down instructions.
*
* Example: In case you uncomment MBEDTLS_ECP_INTERNAL_ALT and
* MBEDTLS_ECP_DOUBLE_JAC_ALT, mbed TLS will still provide the ecp_double_jac
* function, but will use your mbedtls_internal_ecp_double_jac if the group is
* supported (your mbedtls_internal_ecp_grp_capable function returns 1 when
* receives it as an argument). If the group is not supported then the original
* implementation is used. The other functions and the definition of
* mbedtls_ecp_group and mbedtls_ecp_point will not change, so your
* implementation of mbedtls_internal_ecp_double_jac and
* mbedtls_internal_ecp_grp_capable must be compatible with this definition.
*
* Uncomment a macro to enable alternate implementation of the corresponding
* function.
*/
/* Required for all the functions in this section */
#if 0
#define MBEDTLS_ECP_INTERNAL_ALT
#endif
/* Support for Weierstrass curves with Jacobi representation */
#if 0
#define MBEDTLS_ECP_RANDOMIZE_JAC_ALT
#define MBEDTLS_ECP_ADD_MIXED_ALT
#define MBEDTLS_ECP_DOUBLE_JAC_ALT
#define MBEDTLS_ECP_NORMALIZE_JAC_MANY_ALT
#define MBEDTLS_ECP_NORMALIZE_JAC_ALT
#endif
/* Support for curves with Montgomery arithmetic */
#if 0
#define MBEDTLS_ECP_DOUBLE_ADD_MXZ_ALT
#define MBEDTLS_ECP_RANDOMIZE_MXZ_ALT
#define MBEDTLS_ECP_NORMALIZE_MXZ_ALT
#endif
/**
* \def MBEDTLS_ENTROPY_HARDWARE_ALT
*
* Uncomment this macro to let mbed TLS use your own implementation of a
* hardware entropy collector.
*
* Your function must be called \c mbedtls_hardware_poll(), have the same
* prototype as declared in entropy_poll.h, and accept NULL as first argument.
*
* Uncomment to use your own hardware entropy collector.
*/
#if 0
#define MBEDTLS_ENTROPY_HARDWARE_ALT
#endif
/**
* \def MBEDTLS_CAMELLIA_SMALL_MEMORY
*
* Use less ROM for the Camellia implementation (saves about 768 bytes).
*
* Uncomment this macro to use less memory for Camellia.
*/
#if 0
#define MBEDTLS_CAMELLIA_SMALL_MEMORY
#endif
/**
* \def MBEDTLS_CIPHER_MODE_CBC
*
@@ -326,41 +133,6 @@
*/
#define MBEDTLS_CIPHER_MODE_CTR
/**
* \def MBEDTLS_CIPHER_NULL_CIPHER
*
* Enable NULL cipher.
* Warning: Only do so when you know what you are doing. This allows for
* encryption or channels without any security!
*
* Requires MBEDTLS_ENABLE_WEAK_CIPHERSUITES as well to enable
* the following ciphersuites:
* MBEDTLS_TLS_ECDH_ECDSA_WITH_NULL_SHA
* MBEDTLS_TLS_ECDH_RSA_WITH_NULL_SHA
* MBEDTLS_TLS_ECDHE_ECDSA_WITH_NULL_SHA
* MBEDTLS_TLS_ECDHE_RSA_WITH_NULL_SHA
* MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA384
* MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA256
* MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA
* MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA384
* MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA256
* MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA
* MBEDTLS_TLS_RSA_WITH_NULL_SHA256
* MBEDTLS_TLS_RSA_WITH_NULL_SHA
* MBEDTLS_TLS_RSA_WITH_NULL_MD5
* MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA384
* MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA256
* MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA
* MBEDTLS_TLS_PSK_WITH_NULL_SHA384
* MBEDTLS_TLS_PSK_WITH_NULL_SHA256
* MBEDTLS_TLS_PSK_WITH_NULL_SHA
*
* Uncomment this macro to enable the NULL cipher and ciphersuites
*/
#if 0
#define MBEDTLS_CIPHER_NULL_CIPHER
#endif
/**
* \def MBEDTLS_CIPHER_PADDING_PKCS7
*
@@ -377,23 +149,6 @@
#define MBEDTLS_CIPHER_PADDING_ZEROS_AND_LEN
#define MBEDTLS_CIPHER_PADDING_ZEROS
/**
* \def MBEDTLS_ENABLE_WEAK_CIPHERSUITES
*
* Enable weak ciphersuites in SSL / TLS.
* Warning: Only do so when you know what you are doing. This allows for
* channels with virtually no security at all!
*
* This enables the following ciphersuites:
* MBEDTLS_TLS_RSA_WITH_DES_CBC_SHA
* MBEDTLS_TLS_DHE_RSA_WITH_DES_CBC_SHA
*
* Uncomment this macro to enable weak ciphersuites
*/
#if 0
#define MBEDTLS_ENABLE_WEAK_CIPHERSUITES
#endif
/**
* \def MBEDTLS_REMOVE_ARC4_CIPHERSUITES
*
@@ -725,24 +480,6 @@
*/
#define MBEDTLS_FS_IO
/**
* \def MBEDTLS_ENTROPY_FORCE_SHA256
*
* Force the entropy accumulator to use a SHA-256 accumulator instead of the
* default SHA-512 based one (if both are available).
*
* Requires: MBEDTLS_SHA256_C
*
* On 32-bit systems SHA-256 can be much faster than SHA-512. Use this option
* if you have performance concerns.
*
* This option is only useful if both MBEDTLS_SHA256_C and
* MBEDTLS_SHA512_C are defined. Otherwise the available hash module is used.
*/
#if 0
#define MBEDTLS_ENTROPY_FORCE_SHA256
#endif
/**
* \def MBEDTLS_PK_RSA_ALT_SUPPORT
*
@@ -774,24 +511,6 @@
*/
#define MBEDTLS_PKCS1_V21
/**
* \def MBEDTLS_SHA256_SMALLER
*
* Enable an implementation of SHA-256 that has lower ROM footprint but also
* lower performance.
*
* The default implementation is meant to be a reasonnable compromise between
* performance and size. This version optimizes more aggressively for size at
* the expense of performance. Eg on Cortex-M4 it reduces the size of
* mbedtls_sha256_process() from ~2KB to ~0.5KB for a performance hit of about
* 30%.
*
* Uncomment to enable the smaller implementation of SHA256.
*/
#if 0
#define MBEDTLS_SHA256_SMALLER
#endif
/**
* \def MBEDTLS_SSL_ALL_ALERT_MESSAGES
*
@@ -806,24 +525,6 @@
*/
#define MBEDTLS_SSL_ALL_ALERT_MESSAGES
/**
* \def MBEDTLS_SSL_DEBUG_ALL
*
* Enable the debug messages in SSL module for all issues.
* Debug messages have been disabled in some places to prevent timing
* attacks due to (unbalanced) debugging function calls.
*
* If you need all error reporting you should enable this during debugging,
* but remove this for production servers that should log as well.
*
* Uncomment this macro to report all debug messages on errors introducing
* a timing side-channel.
*
*/
#if 0
#define MBEDTLS_SSL_DEBUG_ALL
#endif
/** \def MBEDTLS_SSL_ENCRYPT_THEN_MAC
*
* Enable support for Encrypt-then-MAC, RFC 7366.
@@ -877,18 +578,6 @@
*/
#define MBEDTLS_SSL_FALLBACK_SCSV
/**
* \def MBEDTLS_SSL_HW_RECORD_ACCEL
*
* Enable hooking functions in SSL module for hardware acceleration of
* individual records.
*
* Uncomment this macro to enable hooking functions.
*/
#if 0
#define MBEDTLS_SSL_HW_RECORD_ACCEL
#endif
/**
* \def MBEDTLS_SSL_CBC_RECORD_SPLITTING
*
@@ -916,30 +605,6 @@
*/
#define MBEDTLS_SSL_RENEGOTIATION
/**
* \def MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO
*
* Enable support for receiving and parsing SSLv2 Client Hello messages for the
* SSL Server module (MBEDTLS_SSL_SRV_C).
*
* Uncomment this macro to enable support for SSLv2 Client Hello messages.
*/
#if 0
#define MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO
#endif
/**
* \def MBEDTLS_SSL_SRV_RESPECT_CLIENT_PREFERENCE
*
* Pick the ciphersuite according to the client's preferences rather than ours
* in the SSL Server module (MBEDTLS_SSL_SRV_C).
*
* Uncomment this macro to respect client's ciphersuite order
*/
#if 0
#define MBEDTLS_SSL_SRV_RESPECT_CLIENT_PREFERENCE
#endif
/**
* \def MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
*
@@ -949,20 +614,6 @@
*/
#define MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
/**
* \def MBEDTLS_SSL_PROTO_SSL3
*
* Enable support for SSL 3.0.
*
* Requires: MBEDTLS_MD5_C
* MBEDTLS_SHA1_C
*
* Comment this macro to disable support for SSL 3.0
*/
#if 0
#define MBEDTLS_SSL_PROTO_SSL3
#endif
/**
* \def MBEDTLS_SSL_PROTO_TLS1
*
@@ -1127,58 +778,6 @@
*/
#define MBEDTLS_SSL_TRUNCATED_HMAC
/**
* \def MBEDTLS_THREADING_ALT
*
* Provide your own alternate threading implementation.
*
* Requires: MBEDTLS_THREADING_C
*
* Uncomment this to allow your own alternate threading implementation.
*/
#if 0
#define MBEDTLS_THREADING_ALT
#endif
/**
* \def MBEDTLS_THREADING_PTHREAD
*
* Enable the pthread wrapper layer for the threading layer.
*
* Requires: MBEDTLS_THREADING_C
*
* Uncomment this to enable pthread mutexes.
*/
#if 0
#define MBEDTLS_THREADING_PTHREAD
#endif
/**
* \def MBEDTLS_X509_ALLOW_EXTENSIONS_NON_V3
*
* If set, the X509 parser will not break-off when parsing an X509 certificate
* and encountering an extension in a v1 or v2 certificate.
*
* Uncomment to prevent an error.
*/
#if 0
#define MBEDTLS_X509_ALLOW_EXTENSIONS_NON_V3
#endif
/**
* \def MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION
*
* If set, the X509 parser will not break-off when parsing an X509 certificate
* and encountering an unknown critical extension.
*
* \warning Depending on your PKI use, enabling this can be a security risk!
*
* Uncomment to prevent an error.
*/
#if 0
#define MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION
#endif
/**
* \def MBEDTLS_X509_CHECK_KEY_USAGE
*
@@ -1983,30 +1582,6 @@
*/
#define MBEDTLS_SSL_TLS_C
/**
* \def MBEDTLS_THREADING_C
*
* Enable the threading abstraction layer.
* By default mbed TLS assumes it is used in a non-threaded environment or that
* contexts are not shared between threads. If you do intend to use contexts
* between threads, you will need to enable this layer to prevent race
* conditions. See also our Knowledge Base article about threading:
* https://tls.mbed.org/kb/development/thread-safety-and-multi-threading
*
* Module: library/threading.c
*
* This allows different threading implementations (self-implemented or
* provided).
*
* You will have to enable either MBEDTLS_THREADING_ALT or
* MBEDTLS_THREADING_PTHREAD.
*
* Enable this layer to allow use of mutexes within mbed TLS
*/
#if 0
#define MBEDTLS_THREADING_C
#endif
/**
* \def MBEDTLS_TIMING_C
*
@@ -2170,97 +1745,6 @@
* \{
*/
/* MPI / BIGNUM options */
#if 0
#define MBEDTLS_MPI_WINDOW_SIZE 6 /**< Maximum windows size used. */
#define MBEDTLS_MPI_MAX_SIZE 1024 /**< Maximum number of bytes for usable MPIs. */
#endif
/* CTR_DRBG options */
#if 0
#define MBEDTLS_CTR_DRBG_ENTROPY_LEN 48 /**< Amount of entropy used per seed by default (48 with SHA-512, 32 with SHA-256) */
#define MBEDTLS_CTR_DRBG_RESEED_INTERVAL 10000 /**< Interval before reseed is performed by default */
#define MBEDTLS_CTR_DRBG_MAX_INPUT 256 /**< Maximum number of additional input bytes */
#define MBEDTLS_CTR_DRBG_MAX_REQUEST 1024 /**< Maximum number of requested bytes per call */
#define MBEDTLS_CTR_DRBG_MAX_SEED_INPUT 384 /**< Maximum size of (re)seed buffer */
#endif
/* HMAC_DRBG options */
#if 0
#define MBEDTLS_HMAC_DRBG_RESEED_INTERVAL 10000 /**< Interval before reseed is performed by default */
#define MBEDTLS_HMAC_DRBG_MAX_INPUT 256 /**< Maximum number of additional input bytes */
#define MBEDTLS_HMAC_DRBG_MAX_REQUEST 1024 /**< Maximum number of requested bytes per call */
#define MBEDTLS_HMAC_DRBG_MAX_SEED_INPUT 384 /**< Maximum size of (re)seed buffer */
#endif
/* ECP options */
#if 0
#define MBEDTLS_ECP_MAX_BITS 521 /**< Maximum bit size of groups */
#define MBEDTLS_ECP_WINDOW_SIZE 6 /**< Maximum window size used */
#define MBEDTLS_ECP_FIXED_POINT_OPTIM 1 /**< Enable fixed-point speed-up */
#endif
/* Entropy options */
#if 0
#define MBEDTLS_ENTROPY_MAX_SOURCES 20 /**< Maximum number of sources supported */
#define MBEDTLS_ENTROPY_MAX_GATHER 128 /**< Maximum amount requested from entropy sources */
#define MBEDTLS_ENTROPY_MIN_HARDWARE 32 /**< Default minimum number of bytes required for the hardware entropy source mbedtls_hardware_poll() before entropy is released */
#endif
/* Platform options */
#if 0
#define MBEDTLS_PLATFORM_STD_TIME time /**< Default time to use, can be undefined. MBEDTLS_HAVE_TIME must be enabled */
#define MBEDTLS_PLATFORM_STD_FPRINTF fprintf /**< Default fprintf to use, can be undefined */
#define MBEDTLS_PLATFORM_STD_PRINTF printf /**< Default printf to use, can be undefined */
#endif
/* SSL Cache options */
#if 0
#define MBEDTLS_SSL_CACHE_DEFAULT_TIMEOUT 86400 /**< 1 day */
#define MBEDTLS_SSL_CACHE_DEFAULT_MAX_ENTRIES 50 /**< Maximum entries in cache */
#endif
/* SSL options */
#if 0
#define MBEDTLS_SSL_MAX_CONTENT_LEN 16384 /**< Maxium fragment length in bytes, determines the size of each of the two internal I/O buffers */
#define MBEDTLS_SSL_DEFAULT_TICKET_LIFETIME 86400 /**< Lifetime of session tickets (if enabled) */
#define MBEDTLS_PSK_MAX_LEN 32 /**< Max size of TLS pre-shared keys, in bytes (default 256 bits) */
#define MBEDTLS_SSL_COOKIE_TIMEOUT 60 /**< Default expiration delay of DTLS cookies, in seconds if HAVE_TIME, or in number of cookies issued */
#endif
/**
* Complete list of ciphersuites to use, in order of preference.
*
* \warning No dependency checking is done on that field! This option can only
* be used to restrict the set of available ciphersuites. It is your
* responsibility to make sure the needed modules are active.
*
* Use this to save a few hundred bytes of ROM (default ordering of all
* available ciphersuites) and a few to a few hundred bytes of RAM.
*
* The value below is only an example, not the default.
*/
#if 0
#define MBEDTLS_SSL_CIPHERSUITES MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
#endif
/* X509 options */
#if 0
#define MBEDTLS_X509_MAX_INTERMEDIATE_CA 8 /**< Maximum number of intermediate CAs in a verification chain. */
#define MBEDTLS_X509_MAX_FILE_PATH_LEN 512 /**< Maximum length of a path/filename string in bytes including the null terminator character ('\0'). */
#endif
/**
* Allow SHA-1 in the default TLS configuration for certificate signing.
* Without this build-time option, SHA-1 support must be activated explicitly
* through mbedtls_ssl_conf_cert_profile. Turning on this option is not
* recommended because of it is possible to generte SHA-1 collisions, however
* this may be safe for legacy infrastructure where additional controls apply.
*/
#if 0
#define MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_CERTIFICATES
#endif
/**
* Allow SHA-1 in the default TLS configuration for TLS 1.2 handshake
* signature and ciphersuite selection. Without this build-time option, SHA-1
@@ -2274,11 +1758,6 @@
/* \} name SECTION: Customisation configuration options */
/* Target and application specific configurations */
#if 0
#define YOTTA_CFG_MBEDTLS_TARGET_CONFIG_FILE "mbedtls/target_config.h"
#endif
#if defined(TARGET_LIKE_MBED) && defined(YOTTA_CFG_MBEDTLS_TARGET_CONFIG_FILE)
#include YOTTA_CFG_MBEDTLS_TARGET_CONFIG_FILE
#endif
+52 -158
View File
@@ -13,8 +13,7 @@
*
* More docs to come.
*
* No memory allocations; uses qsort() and assert() from stdlib.
* Can override those by defining STBRP_SORT and STBRP_ASSERT.
* No memory allocations; uses qsort() from stdlib.
*
* This library currently uses the Skyline Bottom-Left algorithm.
*
@@ -30,13 +29,6 @@
* Martins Mozeiko
* Bugfixes / warning fixes
* [your name could be here]
*
* Version history:
*
* 0.06 (2015-04-15) added STBRP_SORT to allow replacing qsort
* 0.05: added STBRP_ASSERT to allow replacing assert
* 0.04: fixed minor bug in STBRP_LARGE_RECTS support
* 0.01: initial release
*/
#ifndef STB_INCLUDE_STB_RECT_PACK_H
@@ -58,12 +50,6 @@ typedef struct stbrp_context stbrp_context;
typedef struct stbrp_node stbrp_node;
typedef struct stbrp_rect stbrp_rect;
#ifdef STBRP_LARGE_RECTS
typedef int stbrp_coord;
#else
typedef unsigned short stbrp_coord;
#endif
STBRP_DEF void stbrp_pack_rects (stbrp_context *context,
stbrp_rect *rects, int num_rects);
@@ -92,8 +78,8 @@ STBRP_DEF void stbrp_pack_rects (stbrp_context *context,
struct stbrp_rect
{
int id; /* reserved for your use: */
stbrp_coord w, h; /* input: */
stbrp_coord x, y; /* output: */
uint16_t w, h; /* input: */
uint16_t x, y; /* output: */
int was_packed; /* non-zero if valid packing */
}; /* 16 bytes, nominally */
@@ -122,21 +108,6 @@ STBRP_DEF void stbrp_init_target (stbrp_context *context,
* may run out of temporary storage and be unable to pack some rectangles.
*/
STBRP_DEF void stbrp_setup_allow_out_of_mem (stbrp_context *context, int allow_out_of_mem);
/* Optionally call this function after init but before doing any packing to
* change the handling of the out-of-temp-memory scenario, described above.
* If you call init again, this will be reset to the default (false).
*/
STBRP_DEF void stbrp_setup_heuristic (stbrp_context *context, int heuristic);
/* Optionally select which packing heuristic the library should use. Different
* heuristics will produce better/worse results for different data sets.
* If you call init again, this will be reset to the default.
*/
enum
{
STBRP_HEURISTIC_Skyline_default=0,
@@ -150,7 +121,7 @@ enum
struct stbrp_node
{
stbrp_coord x,y;
uint16_t x,y;
stbrp_node *next;
};
@@ -176,63 +147,16 @@ struct stbrp_context
/* IMPLEMENTATION SECTION */
#ifdef STB_RECT_PACK_IMPLEMENTATION
#ifndef STBRP_SORT
#include <stdlib.h>
#define STBRP_SORT qsort
#endif
#ifndef STBRP_ASSERT
#include <assert.h>
#define STBRP_ASSERT assert
#endif
enum
{
STBRP__INIT_skyline = 1
};
STBRP_DEF void stbrp_setup_heuristic(stbrp_context *context, int heuristic)
{
switch (context->init_mode)
{
case STBRP__INIT_skyline:
STBRP_ASSERT(heuristic == STBRP_HEURISTIC_Skyline_BL_sortHeight || heuristic == STBRP_HEURISTIC_Skyline_BF_sortHeight);
context->heuristic = heuristic;
break;
default:
STBRP_ASSERT(0);
}
}
STBRP_DEF void stbrp_setup_allow_out_of_mem(stbrp_context *context, int allow_out_of_mem)
{
/* if it's ok to run out of memory, then don't bother aligning them;
* this gives better packing, but may fail due to OOM (even though
* the rectangles easily fit). @TODO a smarter approach would be to only
* quantize once we've hit OOM, then we could get rid of this parameter.
*/
if (allow_out_of_mem)
context->align = 1;
else
{
/* if it's not ok to run out of memory, then quantize the widths
* so that num_nodes is always enough nodes.
*
* I.e. num_nodes * align >= width
* align >= width / num_nodes
* align = ceil(width/num_nodes)
*/
context->align = (context->width + context->num_nodes-1) / context->num_nodes;
}
}
STBRP_DEF void stbrp_init_target(stbrp_context *context, int width, int height, stbrp_node *nodes, int num_nodes)
{
int i;
#ifndef STBRP_LARGE_RECTS
STBRP_ASSERT(width <= 0xffff && height <= 0xffff);
#endif
for (i=0; i < num_nodes-1; ++i)
nodes[i].next = &nodes[i+1];
nodes[i].next = NULL;
@@ -243,19 +167,15 @@ STBRP_DEF void stbrp_init_target(stbrp_context *context, int width, int height,
context->width = width;
context->height = height;
context->num_nodes = num_nodes;
stbrp_setup_allow_out_of_mem(context, 0);
context->align = (context->width + context->num_nodes-1) / context->num_nodes;
/* node 0 is the full width,
* node 1 is the sentinel (lets us not store width explicitly) */
context->extra[0].x = 0;
context->extra[0].y = 0;
context->extra[0].next = &context->extra[1];
context->extra[1].x = (stbrp_coord) width;
#ifdef STBRP_LARGE_RECTS
context->extra[1].y = (1<<30);
#else
context->extra[1].x = (uint16_t) width;
context->extra[1].y = 65535;
#endif
context->extra[1].next = NULL;
}
@@ -266,11 +186,6 @@ static int stbrp__skyline_find_min_y(stbrp_context *c,
int min_y, visited_width, waste_area;
stbrp_node *node = first;
int x1 = x0 + width;
STBRP_ASSERT(first->x <= x0);
STBRP_ASSERT(node->next->x > x0);
STBRP_ASSERT(node->x <= x0);
min_y = 0;
waste_area = 0;
visited_width = 0;
@@ -322,7 +237,6 @@ static stbrp__findresult stbrp__skyline_find_best_pos(stbrp_context *c, int widt
/* align to multiple of c->align */
width = (width + c->align - 1);
width -= width % c->align;
STBRP_ASSERT(width % c->align == 0);
node = c->active_head;
prev = &c->active_head;
@@ -390,7 +304,6 @@ static stbrp__findresult stbrp__skyline_find_best_pos(stbrp_context *c, int widt
{
int xpos = tail->x - width;
int y,waste;
STBRP_ASSERT(xpos >= 0);
/* find the left position that matches this */
while (node->next->x <= xpos)
@@ -399,7 +312,6 @@ static stbrp__findresult stbrp__skyline_find_best_pos(stbrp_context *c, int widt
node = node->next;
}
STBRP_ASSERT(node->next->x > xpos && node->x <= xpos);
y = stbrp__skyline_find_min_y(c, node, xpos, width, &waste);
if (y + height < c->height)
@@ -409,7 +321,6 @@ static stbrp__findresult stbrp__skyline_find_best_pos(stbrp_context *c, int widt
if (y < best_y || waste < best_waste || (waste==best_waste && xpos < best_x))
{
best_x = xpos;
STBRP_ASSERT(y <= best_y);
best_y = y;
best_waste = waste;
best = prev;
@@ -429,7 +340,6 @@ static stbrp__findresult stbrp__skyline_find_best_pos(stbrp_context *c, int widt
static stbrp__findresult stbrp__skyline_pack_rectangle(stbrp_context *context, int width, int height)
{
/* find best position according to heuristic */
stbrp_node *node, *cur;
stbrp__findresult res = stbrp__skyline_find_best_pos(context, width, height);
/* bail if:
@@ -438,52 +348,51 @@ static stbrp__findresult stbrp__skyline_pack_rectangle(stbrp_context *context, i
* 3. we're out of memory
*/
if (res.prev_link == NULL || res.y + height > context->height || context->free_head == NULL)
{
res.prev_link = NULL;
return res;
}
/* on success, create new node */
node = context->free_head;
node->x = (stbrp_coord) res.x;
node->y = (stbrp_coord) (res.y + height);
context->free_head = node->next;
/* insert the new node into the right starting point, and
* let 'cur' point to the remaining nodes needing to be
* stiched back in
*/
cur = *res.prev_link;
if (cur->x < res.x)
{
/* preserve the existing one, so start testing with the next one */
stbrp_node *next = cur->next;
cur->next = node;
cur = next;
}
else
*res.prev_link = node;
/* from here, traverse cur and free the nodes, until we get to one
* that shouldn't be freed */
while (cur->next && cur->next->x <= res.x + width)
{
stbrp_node *next = cur->next;
stbrp_node *cur;
/* on success, create new node */
stbrp_node *node = context->free_head;
node->x = (uint16_t) res.x;
node->y = (uint16_t) (res.y + height);
/* move the current node to the free list */
cur->next = context->free_head;
context->free_head = cur;
cur = next;
context->free_head = node->next;
/* insert the new node into the right starting point, and
* let 'cur' point to the remaining nodes needing to be
* stiched back in
*/
cur = *res.prev_link;
if (cur->x < res.x)
{
/* preserve the existing one, so start testing with the next one */
stbrp_node *next = cur->next;
cur->next = node;
cur = next;
}
else
*res.prev_link = node;
/* from here, traverse cur and free the nodes, until we get to one
* that shouldn't be freed */
while (cur->next && cur->next->x <= res.x + width)
{
stbrp_node *next = cur->next;
/* move the current node to the free list */
cur->next = context->free_head;
context->free_head = cur;
cur = next;
}
/* stitch the list back in */
node->next = cur;
if (cur->x < res.x + width)
cur->x = (uint16_t) (res.x + width);
}
/* stitch the list back in */
node->next = cur;
if (cur->x < res.x + width)
cur->x = (stbrp_coord) (res.x + width);
return res;
}
@@ -498,17 +407,6 @@ static int rect_height_compare(const void *a, const void *b)
return (p->w > q->w) ? -1 : (p->w < q->w);
}
STBRP_DEF int rect_width_compare(const void *a, const void *b)
{
stbrp_rect *p = (stbrp_rect *) a;
stbrp_rect *q = (stbrp_rect *) b;
if (p->w > q->w)
return -1;
if (p->w < q->w)
return 1;
return (p->h > q->h) ? -1 : (p->h < q->h);
}
static int rect_original_order(const void *a, const void *b)
{
stbrp_rect *p = (stbrp_rect *) a;
@@ -516,11 +414,7 @@ static int rect_original_order(const void *a, const void *b)
return (p->was_packed < q->was_packed) ? -1 : (p->was_packed > q->was_packed);
}
#ifdef STBRP_LARGE_RECTS
#define STBRP__MAXVAL 0xffffffff
#else
#define STBRP__MAXVAL 0xffff
#endif
STBRP_DEF void stbrp_pack_rects(stbrp_context *context, stbrp_rect *rects, int num_rects)
{
@@ -531,22 +425,22 @@ STBRP_DEF void stbrp_pack_rects(stbrp_context *context, stbrp_rect *rects, int n
rects[i].was_packed = i;
/* sort according to heuristic */
STBRP_SORT(rects, num_rects, sizeof(rects[0]), rect_height_compare);
qsort(rects, num_rects, sizeof(rects[0]), rect_height_compare);
for (i=0; i < num_rects; ++i)
{
stbrp__findresult fr = stbrp__skyline_pack_rectangle(context, rects[i].w, rects[i].h);
if (fr.prev_link)
{
rects[i].x = (stbrp_coord) fr.x;
rects[i].y = (stbrp_coord) fr.y;
} else {
rects[i].x = rects[i].y = STBRP__MAXVAL;
rects[i].x = (uint16_t) fr.x;
rects[i].y = (uint16_t) fr.y;
}
else
rects[i].x = rects[i].y = STBRP__MAXVAL;
}
/* unsort */
STBRP_SORT(rects, num_rects, sizeof(rects[0]), rect_original_order);
qsort(rects, num_rects, sizeof(rects[0]), rect_original_order);
/* set was_packed flags */
for (i=0; i < num_rects; ++i)
+158 -1176
View File
File diff suppressed because it is too large. Load diff
-25
View File
@@ -52,7 +52,6 @@ extern unsigned int stb_vorbis_get_file_offset(stb_vorbis *f);
/* PULLING INPUT API */
#ifndef STB_VORBIS_NO_PULLDATA_API
/* This API assumes stb_vorbis is allowed to pull data from a source--
* either a block of memory containing the _entire_ vorbis stream, or a
* FILE * that you or it create, or possibly some other reading mechanism
@@ -102,8 +101,6 @@ extern int stb_vorbis_get_samples_float(stb_vorbis *f, int channels, float **buf
* at the end of the file. If there are no more samples in the file, returns 0.
*/
#endif
/* ERROR CODES */
enum STBVorbisError
@@ -155,13 +152,6 @@ enum STBVorbisError
* crucial)
*/
/* STB_VORBIS_NO_PULLDATA_API
* does not compile the code for the non-pushdata APIs
*/
#if 0
#define STB_VORBIS_NO_PULLDATA_API
#endif
/* STB_VORBIS_MAX_CHANNELS [number]
* globally define this to the maximum number of channels you need.
* The spec does not put a restriction on channels except that
@@ -200,17 +190,6 @@ enum STBVorbisError
#define STB_VORBIS_FAST_HUFFMAN_SHORT
#endif
/* STB_VORBIS_NO_HUFFMAN_BINARY_SEARCH
* If the 'fast huffman' search doesn't succeed, then stb_vorbis falls
* back on binary searching for the correct one. This requires storing
* extra tables with the huffman codes in sorted order. Defining this
* symbol trades off space for speed by forcing a linear search in the
* non-fast case, except for "sparse" codebooks.
*/
#if 0
#define STB_VORBIS_NO_HUFFMAN_BINARY_SEARCH
#endif
/* STB_VORBIS_CODEBOOK_SHORTS
* The vorbis file format encodes VQ codebook floats as ax+b where a and
* b are floating point per-codebook constants, and x is a 16-bit int.
@@ -2827,11 +2806,9 @@ static int start_decoder(vorb *f)
sorted_count = total;
} else {
sorted_count = 0;
#ifndef STB_VORBIS_NO_HUFFMAN_BINARY_SEARCH
for (j=0; j < c->entries; ++j)
if (lengths[j] > STB_VORBIS_FAST_HUFFMAN_LENGTH && lengths[j] != NO_CODE)
++sorted_count;
#endif
}
c->sorted_entries = sorted_count;
@@ -3294,7 +3271,6 @@ unsigned int stb_vorbis_get_file_offset(stb_vorbis *f)
return (unsigned int)(f->stream - f->stream_start);
}
#ifndef STB_VORBIS_NO_PULLDATA_API
/* DATA-PULLING API */
static uint32_t vorbis_find_page(stb_vorbis *f, uint32_t *end, uint32_t *last)
@@ -3905,6 +3881,5 @@ int stb_vorbis_get_samples_float(stb_vorbis *f, int channels, float **buffer, in
}
return n;
}
#endif /* STB_VORBIS_NO_PULLDATA_API */
#endif /* STB_VORBIS_HEADER_ONLY */
-8
View File
@@ -115,14 +115,6 @@ static usize_t fgk_encode_data (fgk_stream *h,
#endif
static INLINE fgk_bit fgk_get_encoded_bit (fgk_stream *h);
#if 0
static int xd3_encode_fgk (xd3_stream *stream,
fgk_stream *sec_stream,
xd3_output *input,
xd3_output *output,
xd3_sec_cfg *cfg);
#endif
/*********************************************************************/
/* Decoder */
/*********************************************************************/
-5
View File
@@ -825,11 +825,6 @@ static size_t search_collisions(
/* clean and exit */
free (hashCandidates);
#if 0 /* debug */
for (size_t n=0; n<nbCandidates; n++)
printf("0x%016llx \n", (unsigned long long)hashCandidates[n]);
#endif
if (param.resultPtr) param.resultPtr->nbCollisions = collisions;
return collisions;
}
-11
View File
@@ -44,16 +44,5 @@ void sort64(uint64_t* table, size_t size)
void sort128(XXH128_hash_t* table, size_t size)
{
#if 0
// C++ sort using a custom function object
struct {
bool operator()(XXH128_hash_t a, XXH128_hash_t b) const
{
return XXH128_cmp(&a, &b);
}
} customLess;
std::sort(table, table + size, customLess);
#else
qsort(table, size, sizeof(*table), XXH128_cmp);
#endif
}
-17
View File
@@ -2088,20 +2088,12 @@ XXH32_endian_align(const xxh_u8* input, size_t len, xxh_u32 seed, XXH_alignment
/*! @ingroup xxh32_family */
XXH_PUBLIC_API XXH32_hash_t XXH32 (const void* input, size_t len, XXH32_hash_t seed)
{
#if 0
/* Simple version, good for code maintenance, but unfortunately slow for small inputs */
XXH32_state_t state;
XXH32_reset(&state, seed);
XXH32_update(&state, (const xxh_u8*)input, len);
return XXH32_digest(&state);
#else
if (XXH_FORCE_ALIGN_CHECK) {
if ((((size_t)input) & 3) == 0) { /* Input is 4-bytes aligned, leverage the speed benefit */
return XXH32_endian_align((const xxh_u8*)input, len, seed, XXH_aligned);
} }
return XXH32_endian_align((const xxh_u8*)input, len, seed, XXH_unaligned);
#endif
}
@@ -2504,21 +2496,12 @@ XXH64_endian_align(const xxh_u8* input, size_t len, xxh_u64 seed, XXH_alignment
/*! @ingroup xxh64_family */
XXH_PUBLIC_API XXH64_hash_t XXH64 (const void* input, size_t len, XXH64_hash_t seed)
{
#if 0
/* Simple version, good for code maintenance, but unfortunately slow for small inputs */
XXH64_state_t state;
XXH64_reset(&state, seed);
XXH64_update(&state, (const xxh_u8*)input, len);
return XXH64_digest(&state);
#else
if (XXH_FORCE_ALIGN_CHECK) {
if ((((size_t)input) & 7)==0) { /* Input is aligned, let's leverage the speed advantage */
return XXH64_endian_align((const xxh_u8*)input, len, seed, XXH_aligned);
} }
return XXH64_endian_align((const xxh_u8*)input, len, seed, XXH_unaligned);
#endif
}
/******* Hash Streaming *******/
-25
View File
@@ -199,17 +199,6 @@ size_t FSE_buildCTable_wksp(FSE_CTable* ct,
total += (unsigned)normalizedCounter[s];
} } } }
#if 0 /* debug : symbol costs */
DEBUGLOG(5, "\n --- table statistics : ");
{ U32 symbol;
for (symbol=0; symbol<=maxSymbolValue; symbol++) {
DEBUGLOG(5, "%3u: w=%3i, maxBits=%u, fracBits=%.2f",
symbol, normalizedCounter[symbol],
FSE_getMaxNbBits(symbolTT, symbol),
(double)FSE_bitCost(symbolTT, tableLog, symbol, 8) / 256);
} }
#endif
return 0;
}
@@ -506,20 +495,6 @@ size_t FSE_normalizeCount (short* normalizedCounter, unsigned tableLog,
else normalizedCounter[largest] += (short)stillToDistribute;
}
#if 0
{ /* Print Table (debug) */
U32 s;
U32 nTotal = 0;
for (s=0; s<=maxSymbolValue; s++)
RAWLOG(2, "%3i: %4i \n", s, normalizedCounter[s]);
for (s=0; s<=maxSymbolValue; s++)
nTotal += abs(normalizedCounter[s]);
if (nTotal != (1U<<tableLog))
RAWLOG(2, "Warning !!! Total == %u != %u !!!", nTotal, 1U<<tableLog);
getchar();
}
#endif
return tableLog;
}
-27
View File
@@ -23,19 +23,9 @@
* Price functions for optimal parser
***************************************/
#if 0 /* approximation at bit level (for tests) */
# define BITCOST_ACCURACY 0
# define BITCOST_MULTIPLIER (1 << BITCOST_ACCURACY)
# define WEIGHT(stat, opt) ((void)(opt), ZSTD_bitWeight(stat))
#elif 0 /* fractional bit accuracy (for tests) */
# define BITCOST_ACCURACY 8
# define BITCOST_MULTIPLIER (1 << BITCOST_ACCURACY)
# define WEIGHT(stat,opt) ((void)(opt), ZSTD_fracWeight(stat))
#else /* opt==approx, ultra==accurate */
# define BITCOST_ACCURACY 8
# define BITCOST_MULTIPLIER (1 << BITCOST_ACCURACY)
# define WEIGHT(stat,opt) ((opt) ? ZSTD_fracWeight(stat) : ZSTD_bitWeight(stat))
#endif
/* ZSTD_bitWeight() :
* provide estimated "cost" of a stat in full bits only */
@@ -1040,23 +1030,6 @@ static U32 ZSTD_totalLen(ZSTD_optimal_t sol)
return sol.litlen + sol.mlen;
}
#if 0 /* debug */
static void
listStats(const U32* table, int lastEltID)
{
int const nbElts = lastEltID + 1;
int enb;
for (enb=0; enb < nbElts; enb++) {
(void)table;
/* RAWLOG(2, "%3i:%3i, ", enb, table[enb]); */
RAWLOG(2, "%4i,", table[enb]);
}
RAWLOG(2, " \n");
}
#endif
FORCE_INLINE_TEMPLATE size_t
ZSTD_compressBlock_opt_generic(ZSTD_matchState_t* ms,
seqStore_t* seqStore,
+2 -14
View File
@@ -373,7 +373,7 @@ static void frontend_darwin_get_env(int *argc, char *argv[],
}
#endif
if (portable)
strncpy(documents_dir_buf, application_data, sizeof(documents_dir_buf));
strlcpy(documents_dir_buf, application_data, sizeof(documents_dir_buf));
else
{
CFSearchPathForDirectoriesInDomains(documents_dir_buf, sizeof(documents_dir_buf));
@@ -385,7 +385,7 @@ static void frontend_darwin_get_env(int *argc, char *argv[],
path_resolve_realpath(documents_dir_buf, sizeof(documents_dir_buf), true);
strlcat(documents_dir_buf, "/RetroArch", sizeof(documents_dir_buf));
/* iOS and tvOS are going to put everything in the documents dir */
strncpy(application_data, documents_dir_buf, sizeof(application_data));
strlcpy(application_data, documents_dir_buf, sizeof(application_data));
#endif
/* By the time we are here:
@@ -483,18 +483,6 @@ static int frontend_darwin_get_rating(void)
frontend_darwin_get_name(model, sizeof(model));
/* iPhone 4 */
#if 0
if (strstr(model, "iPhone3"))
return -1;
#endif
/* iPad 1 */
#if 0
if (strstr(model, "iPad1,1"))
return -1;
#endif
/* iPhone 4S */
if (strstr(model, "iPhone4,1"))
return 8;
-8
View File
@@ -1758,14 +1758,6 @@ static void frontend_unix_get_env(int *argc,
g_defaults.menu_materialui_menu_color_theme_enable = true;
g_defaults.menu_materialui_menu_color_theme = MATERIALUI_THEME_NVIDIA_SHIELD;
#endif
#endif
#if 0
/* Set the OK/cancel menu buttons to the default
* ones used for Shield */
g_defaults.menu_controls_set = true;
g_defaults.menu_controls_menu_btn_ok = RETRO_DEVICE_ID_JOYPAD_B;
g_defaults.menu_controls_menu_btn_cancel = RETRO_DEVICE_ID_JOYPAD_A;
#endif
}
else if (strstr(device_model, "JSS15J"))
+3 -2
View File
@@ -74,7 +74,7 @@ static bool kms_display_server_set_resolution(void *data,
height = curr_height;
if (hz == 0)
hz = curr_refreshrate;
/* set core refresh from hz */
video_monitor_set_refresh_rate(hz);
@@ -177,7 +177,8 @@ static void *kms_display_server_get_resolution_list(
return conf;
}
/* TODO: screen orientation has support in DRM via planes, although not really exposed via xf86drm */
/* TODO/FIXME: screen orientation has support in DRM via planes,
* although not really exposed via xf86drm */
#if 0
static void kms_display_server_set_screen_orientation(void *data,
enum rotation rotation)
-6
View File
@@ -2995,13 +2995,7 @@ static void d3d12_init_base(d3d12_video_t* d3d12)
if (SUCCEEDED(d3d12->device->lpVtbl->QueryInterface(d3d12->device, uuidof(ID3D12InfoQueue), (void*)&d3d12->info_queue)))
{
#if 0
d3d12->info_queue->lpVtbl->SetBreakOnSeverity(d3d12->info_queue, D3D12_MESSAGE_SEVERITY_CORRUPTION, TRUE);
#endif
d3d12->info_queue->lpVtbl->SetBreakOnSeverity(d3d12->info_queue, D3D12_MESSAGE_SEVERITY_ERROR, TRUE);
#if 0
d3d12->info_queue->lpVtbl->SetBreakOnSeverity(d3d12->info_queue, D3D12_MESSAGE_SEVERITY_WARNING, TRUE);
#endif
}
}
-6
View File
@@ -267,12 +267,6 @@ static bool fpga_frame(void *data, const void *frame,
}
}
}
#if 0
else
{
/* TODO/FIXME: handle 32-bit core output */
}
#endif
}
return true;
-7
View File
@@ -450,13 +450,6 @@ static bool gl_glsl_compile_shader(glsl_shader_data_t *glsl,
glGetShaderiv(shader, GL_COMPILE_STATUS, &status);
gl_glsl_print_shader_log(shader);
#if 0
#if defined(ORBIS)
if (status == GL_TRUE)
gl_glsl_dump_shader(shader, save_path);
#endif
#endif
return status == GL_TRUE;
}
+272 -282
View File
@@ -1,282 +1,272 @@
#ifndef __khrplatform_h_
#define __khrplatform_h_
/*
** Copyright (c) 2008-2018 The Khronos Group Inc.
**
** Permission is hereby granted, free of charge, to any person obtaining a
** copy of this software and/or associated documentation files (the
** "Materials"), to deal in the Materials without restriction, including
** without limitation the rights to use, copy, modify, merge, publish,
** distribute, sublicense, and/or sell copies of the Materials, and to
** permit persons to whom the Materials are furnished to do so, subject to
** the following conditions:
**
** The above copyright notice and this permission notice shall be included
** in all copies or substantial portions of the Materials.
**
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
*/
/* Khronos platform-specific types and definitions.
*
* The master copy of khrplatform.h is maintained in the Khronos EGL
* Registry repository at https://github.com/KhronosGroup/EGL-Registry
* The last semantic modification to khrplatform.h was at commit ID:
* 67a3e0864c2d75ea5287b9f3d2eb74a745936692
*
* Adopters may modify this file to suit their platform. Adopters are
* encouraged to submit platform specific modifications to the Khronos
* group so that they can be included in future versions of this file.
* Please submit changes by filing pull requests or issues on
* the EGL Registry repository linked above.
*
*
* See the Implementer's Guidelines for information about where this file
* should be located on your system and for more details of its use:
* http://www.khronos.org/registry/implementers_guide.pdf
*
* This file should be included as
* #include <KHR/khrplatform.h>
* by Khronos client API header files that use its types and defines.
*
* The types in khrplatform.h should only be used to define API-specific types.
*
* Types defined in khrplatform.h:
* khronos_int8_t signed 8 bit
* khronos_uint8_t unsigned 8 bit
* khronos_int16_t signed 16 bit
* khronos_uint16_t unsigned 16 bit
* khronos_int32_t signed 32 bit
* khronos_uint32_t unsigned 32 bit
* khronos_int64_t signed 64 bit
* khronos_uint64_t unsigned 64 bit
* khronos_intptr_t signed same number of bits as a pointer
* khronos_uintptr_t unsigned same number of bits as a pointer
* khronos_ssize_t signed size
* khronos_usize_t unsigned size
* khronos_float_t signed 32 bit floating point
* khronos_time_ns_t unsigned 64 bit time in nanoseconds
* khronos_utime_nanoseconds_t unsigned time interval or absolute time in
* nanoseconds
* khronos_stime_nanoseconds_t signed time interval in nanoseconds
* khronos_boolean_enum_t enumerated boolean type. This should
* only be used as a base type when a client API's boolean type is
* an enum. Client APIs which use an integer or other type for
* booleans cannot use this as the base type for their boolean.
*
* Tokens defined in khrplatform.h:
*
* KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values.
*
* KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0.
* KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0.
*
* Calling convention macros defined in this file:
* KHRONOS_APICALL
* KHRONOS_APIENTRY
* KHRONOS_APIATTRIBUTES
*
* These may be used in function prototypes as:
*
* KHRONOS_APICALL void KHRONOS_APIENTRY funcname(
* int arg1,
* int arg2) KHRONOS_APIATTRIBUTES;
*/
/*-------------------------------------------------------------------------
* Definition of KHRONOS_APICALL
*-------------------------------------------------------------------------
* This precedes the return type of the function in the function prototype.
*/
#if defined(_WIN32) && !defined(__SCITECH_SNAP__)
# define KHRONOS_APICALL __declspec(dllimport)
#elif defined (__SYMBIAN32__)
# define KHRONOS_APICALL IMPORT_C
#elif defined(__ANDROID__)
# define KHRONOS_APICALL __attribute__((visibility("default")))
#else
# define KHRONOS_APICALL
#endif
/*-------------------------------------------------------------------------
* Definition of KHRONOS_APIENTRY
*-------------------------------------------------------------------------
* This follows the return type of the function and precedes the function
* name in the function prototype.
*/
#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__)
/* Win32 but not WinCE */
# define KHRONOS_APIENTRY __stdcall
#else
# define KHRONOS_APIENTRY
#endif
/*-------------------------------------------------------------------------
* Definition of KHRONOS_APIATTRIBUTES
*-------------------------------------------------------------------------
* This follows the closing parenthesis of the function prototype arguments.
*/
#if defined (__ARMCC_2__)
#define KHRONOS_APIATTRIBUTES __softfp
#else
#define KHRONOS_APIATTRIBUTES
#endif
/*-------------------------------------------------------------------------
* basic type definitions
*-----------------------------------------------------------------------*/
#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__)
/*
* Using <stdint.h>
*/
#include <stdint.h>
typedef int32_t khronos_int32_t;
typedef uint32_t khronos_uint32_t;
typedef int64_t khronos_int64_t;
typedef uint64_t khronos_uint64_t;
#define KHRONOS_SUPPORT_INT64 1
#define KHRONOS_SUPPORT_FLOAT 1
#elif defined(__VMS ) || defined(__sgi)
/*
* Using <inttypes.h>
*/
#include <inttypes.h>
typedef int32_t khronos_int32_t;
typedef uint32_t khronos_uint32_t;
typedef int64_t khronos_int64_t;
typedef uint64_t khronos_uint64_t;
#define KHRONOS_SUPPORT_INT64 1
#define KHRONOS_SUPPORT_FLOAT 1
#elif defined(_WIN32) && !defined(__SCITECH_SNAP__)
/*
* Win32
*/
typedef __int32 khronos_int32_t;
typedef unsigned __int32 khronos_uint32_t;
typedef __int64 khronos_int64_t;
typedef unsigned __int64 khronos_uint64_t;
#define KHRONOS_SUPPORT_INT64 1
#define KHRONOS_SUPPORT_FLOAT 1
#elif defined(__sun__) || defined(__digital__)
/*
* Sun or Digital
*/
typedef int khronos_int32_t;
typedef unsigned int khronos_uint32_t;
#if defined(__arch64__) || defined(_LP64)
typedef long int khronos_int64_t;
typedef unsigned long int khronos_uint64_t;
#else
typedef long long int khronos_int64_t;
typedef unsigned long long int khronos_uint64_t;
#endif /* __arch64__ */
#define KHRONOS_SUPPORT_INT64 1
#define KHRONOS_SUPPORT_FLOAT 1
#elif 0
/*
* Hypothetical platform with no float or int64 support
*/
typedef int khronos_int32_t;
typedef unsigned int khronos_uint32_t;
#define KHRONOS_SUPPORT_INT64 0
#define KHRONOS_SUPPORT_FLOAT 0
#else
/*
* Generic fallback
*/
#include <stdint.h>
typedef int32_t khronos_int32_t;
typedef uint32_t khronos_uint32_t;
typedef int64_t khronos_int64_t;
typedef uint64_t khronos_uint64_t;
#define KHRONOS_SUPPORT_INT64 1
#define KHRONOS_SUPPORT_FLOAT 1
#endif
/*
* Types that are (so far) the same on all platforms
*/
typedef signed char khronos_int8_t;
typedef unsigned char khronos_uint8_t;
typedef signed short int khronos_int16_t;
typedef unsigned short int khronos_uint16_t;
/*
* Types that differ between LLP64 and LP64 architectures - in LLP64,
* pointers are 64 bits, but 'long' is still 32 bits. Win64 appears
* to be the only LLP64 architecture in current use.
*/
#ifdef _WIN64
typedef signed long long int khronos_intptr_t;
typedef unsigned long long int khronos_uintptr_t;
typedef signed long long int khronos_ssize_t;
typedef unsigned long long int khronos_usize_t;
#else
typedef signed long int khronos_intptr_t;
typedef unsigned long int khronos_uintptr_t;
typedef signed long int khronos_ssize_t;
typedef unsigned long int khronos_usize_t;
#endif
#if KHRONOS_SUPPORT_FLOAT
/*
* Float type
*/
typedef float khronos_float_t;
#endif
#if KHRONOS_SUPPORT_INT64
/* Time types
*
* These types can be used to represent a time interval in nanoseconds or
* an absolute Unadjusted System Time. Unadjusted System Time is the number
* of nanoseconds since some arbitrary system event (e.g. since the last
* time the system booted). The Unadjusted System Time is an unsigned
* 64 bit value that wraps back to 0 every 584 years. Time intervals
* may be either signed or unsigned.
*/
typedef khronos_uint64_t khronos_utime_nanoseconds_t;
typedef khronos_int64_t khronos_stime_nanoseconds_t;
#endif
/*
* Dummy value used to pad enum types to 32 bits.
*/
#ifndef KHRONOS_MAX_ENUM
#define KHRONOS_MAX_ENUM 0x7FFFFFFF
#endif
/*
* Enumerated boolean type
*
* Values other than zero should be considered to be true. Therefore
* comparisons should not be made against KHRONOS_TRUE.
*/
typedef enum {
KHRONOS_FALSE = 0,
KHRONOS_TRUE = 1,
KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM
} khronos_boolean_enum_t;
#endif /* __khrplatform_h_ */
#ifndef __khrplatform_h_
#define __khrplatform_h_
/*
** Copyright (c) 2008-2018 The Khronos Group Inc.
**
** Permission is hereby granted, free of charge, to any person obtaining a
** copy of this software and/or associated documentation files (the
** "Materials"), to deal in the Materials without restriction, including
** without limitation the rights to use, copy, modify, merge, publish,
** distribute, sublicense, and/or sell copies of the Materials, and to
** permit persons to whom the Materials are furnished to do so, subject to
** the following conditions:
**
** The above copyright notice and this permission notice shall be included
** in all copies or substantial portions of the Materials.
**
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
*/
/* Khronos platform-specific types and definitions.
*
* The master copy of khrplatform.h is maintained in the Khronos EGL
* Registry repository at https://github.com/KhronosGroup/EGL-Registry
* The last semantic modification to khrplatform.h was at commit ID:
* 67a3e0864c2d75ea5287b9f3d2eb74a745936692
*
* Adopters may modify this file to suit their platform. Adopters are
* encouraged to submit platform specific modifications to the Khronos
* group so that they can be included in future versions of this file.
* Please submit changes by filing pull requests or issues on
* the EGL Registry repository linked above.
*
*
* See the Implementer's Guidelines for information about where this file
* should be located on your system and for more details of its use:
* http://www.khronos.org/registry/implementers_guide.pdf
*
* This file should be included as
* #include <KHR/khrplatform.h>
* by Khronos client API header files that use its types and defines.
*
* The types in khrplatform.h should only be used to define API-specific types.
*
* Types defined in khrplatform.h:
* khronos_int8_t signed 8 bit
* khronos_uint8_t unsigned 8 bit
* khronos_int16_t signed 16 bit
* khronos_uint16_t unsigned 16 bit
* khronos_int32_t signed 32 bit
* khronos_uint32_t unsigned 32 bit
* khronos_int64_t signed 64 bit
* khronos_uint64_t unsigned 64 bit
* khronos_intptr_t signed same number of bits as a pointer
* khronos_uintptr_t unsigned same number of bits as a pointer
* khronos_ssize_t signed size
* khronos_usize_t unsigned size
* khronos_float_t signed 32 bit floating point
* khronos_time_ns_t unsigned 64 bit time in nanoseconds
* khronos_utime_nanoseconds_t unsigned time interval or absolute time in
* nanoseconds
* khronos_stime_nanoseconds_t signed time interval in nanoseconds
* khronos_boolean_enum_t enumerated boolean type. This should
* only be used as a base type when a client API's boolean type is
* an enum. Client APIs which use an integer or other type for
* booleans cannot use this as the base type for their boolean.
*
* Tokens defined in khrplatform.h:
*
* KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values.
*
* KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0.
* KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0.
*
* Calling convention macros defined in this file:
* KHRONOS_APICALL
* KHRONOS_APIENTRY
* KHRONOS_APIATTRIBUTES
*
* These may be used in function prototypes as:
*
* KHRONOS_APICALL void KHRONOS_APIENTRY funcname(
* int arg1,
* int arg2) KHRONOS_APIATTRIBUTES;
*/
/*-------------------------------------------------------------------------
* Definition of KHRONOS_APICALL
*-------------------------------------------------------------------------
* This precedes the return type of the function in the function prototype.
*/
#if defined(_WIN32) && !defined(__SCITECH_SNAP__)
# define KHRONOS_APICALL __declspec(dllimport)
#elif defined (__SYMBIAN32__)
# define KHRONOS_APICALL IMPORT_C
#elif defined(__ANDROID__)
# define KHRONOS_APICALL __attribute__((visibility("default")))
#else
# define KHRONOS_APICALL
#endif
/*-------------------------------------------------------------------------
* Definition of KHRONOS_APIENTRY
*-------------------------------------------------------------------------
* This follows the return type of the function and precedes the function
* name in the function prototype.
*/
#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__)
/* Win32 but not WinCE */
# define KHRONOS_APIENTRY __stdcall
#else
# define KHRONOS_APIENTRY
#endif
/*-------------------------------------------------------------------------
* Definition of KHRONOS_APIATTRIBUTES
*-------------------------------------------------------------------------
* This follows the closing parenthesis of the function prototype arguments.
*/
#if defined (__ARMCC_2__)
#define KHRONOS_APIATTRIBUTES __softfp
#else
#define KHRONOS_APIATTRIBUTES
#endif
/*-------------------------------------------------------------------------
* basic type definitions
*-----------------------------------------------------------------------*/
#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__)
/*
* Using <stdint.h>
*/
#include <stdint.h>
typedef int32_t khronos_int32_t;
typedef uint32_t khronos_uint32_t;
typedef int64_t khronos_int64_t;
typedef uint64_t khronos_uint64_t;
#define KHRONOS_SUPPORT_INT64 1
#define KHRONOS_SUPPORT_FLOAT 1
#elif defined(__VMS ) || defined(__sgi)
/*
* Using <inttypes.h>
*/
#include <inttypes.h>
typedef int32_t khronos_int32_t;
typedef uint32_t khronos_uint32_t;
typedef int64_t khronos_int64_t;
typedef uint64_t khronos_uint64_t;
#define KHRONOS_SUPPORT_INT64 1
#define KHRONOS_SUPPORT_FLOAT 1
#elif defined(_WIN32) && !defined(__SCITECH_SNAP__)
/*
* Win32
*/
typedef __int32 khronos_int32_t;
typedef unsigned __int32 khronos_uint32_t;
typedef __int64 khronos_int64_t;
typedef unsigned __int64 khronos_uint64_t;
#define KHRONOS_SUPPORT_INT64 1
#define KHRONOS_SUPPORT_FLOAT 1
#elif defined(__sun__) || defined(__digital__)
/*
* Sun or Digital
*/
typedef int khronos_int32_t;
typedef unsigned int khronos_uint32_t;
#if defined(__arch64__) || defined(_LP64)
typedef long int khronos_int64_t;
typedef unsigned long int khronos_uint64_t;
#else
typedef long long int khronos_int64_t;
typedef unsigned long long int khronos_uint64_t;
#endif /* __arch64__ */
#define KHRONOS_SUPPORT_INT64 1
#define KHRONOS_SUPPORT_FLOAT 1
#else
/*
* Generic fallback
*/
#include <stdint.h>
typedef int32_t khronos_int32_t;
typedef uint32_t khronos_uint32_t;
typedef int64_t khronos_int64_t;
typedef uint64_t khronos_uint64_t;
#define KHRONOS_SUPPORT_INT64 1
#define KHRONOS_SUPPORT_FLOAT 1
#endif
/*
* Types that are (so far) the same on all platforms
*/
typedef signed char khronos_int8_t;
typedef unsigned char khronos_uint8_t;
typedef signed short int khronos_int16_t;
typedef unsigned short int khronos_uint16_t;
/*
* Types that differ between LLP64 and LP64 architectures - in LLP64,
* pointers are 64 bits, but 'long' is still 32 bits. Win64 appears
* to be the only LLP64 architecture in current use.
*/
#ifdef _WIN64
typedef signed long long int khronos_intptr_t;
typedef unsigned long long int khronos_uintptr_t;
typedef signed long long int khronos_ssize_t;
typedef unsigned long long int khronos_usize_t;
#else
typedef signed long int khronos_intptr_t;
typedef unsigned long int khronos_uintptr_t;
typedef signed long int khronos_ssize_t;
typedef unsigned long int khronos_usize_t;
#endif
#if KHRONOS_SUPPORT_FLOAT
/*
* Float type
*/
typedef float khronos_float_t;
#endif
#if KHRONOS_SUPPORT_INT64
/* Time types
*
* These types can be used to represent a time interval in nanoseconds or
* an absolute Unadjusted System Time. Unadjusted System Time is the number
* of nanoseconds since some arbitrary system event (e.g. since the last
* time the system booted). The Unadjusted System Time is an unsigned
* 64 bit value that wraps back to 0 every 584 years. Time intervals
* may be either signed or unsigned.
*/
typedef khronos_uint64_t khronos_utime_nanoseconds_t;
typedef khronos_int64_t khronos_stime_nanoseconds_t;
#endif
/*
* Dummy value used to pad enum types to 32 bits.
*/
#ifndef KHRONOS_MAX_ENUM
#define KHRONOS_MAX_ENUM 0x7FFFFFFF
#endif
/*
* Enumerated boolean type
*
* Values other than zero should be considered to be true. Therefore
* comparisons should not be made against KHRONOS_TRUE.
*/
typedef enum {
KHRONOS_FALSE = 0,
KHRONOS_TRUE = 1,
KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM
} khronos_boolean_enum_t;
#endif /* __khrplatform_h_ */
-5
View File
@@ -59,11 +59,6 @@
#include "cg.h"
#include <d3d9.h>
#if 0
#ifdef HAVE_D3DX
#include "../d3d9/d3dx9.h"
#endif
#endif
#include <windows.h>
/* Set up for either Win32 import/export/lib. */
-10
View File
@@ -210,16 +210,6 @@ typedef unsigned long long int khronos_uint64_t;
#define KHRONOS_SUPPORT_INT64 1
#define KHRONOS_SUPPORT_FLOAT 1
#elif 0
/*
* Hypothetical platform with no float or int64 support
*/
typedef int khronos_int32_t;
typedef unsigned int khronos_uint32_t;
#define KHRONOS_SUPPORT_INT64 0
#define KHRONOS_SUPPORT_FLOAT 0
#else
/*
-4
View File
@@ -1465,10 +1465,6 @@ HRESULT WINAPI D3DXSHProjectCubeMap
}
#endif
#if 0
#include "d3dx9math.inl"
#endif
#if _MSC_VER >= 1200
#pragma warning(pop)
#endif
-4
View File
@@ -190,10 +190,6 @@ typedef struct DXGI_ADAPTER_DESC
#if !defined(HMONITOR_DECLARED) && !defined(HMONITOR) && (WINVER < 0x0500)
#define HMONITOR_DECLARED
#if 0
typedef HANDLE HMONITOR;
#endif
DECLARE_HANDLE(HMONITOR);
#endif
typedef struct DXGI_OUTPUT_DESC
@@ -1683,49 +1683,6 @@ static VC_CONTAINER_STATUS_T asf_reader_index_find_time( VC_CONTAINER_T *p_ctx,
else return STREAM_STATUS(p_ctx);
}
#if 0
/*****************************************************************************/
static VC_CONTAINER_STATUS_T asf_reader_index_find_packet( VC_CONTAINER_T *p_ctx,
unsigned int track, uint32_t *packet_num, bool forward )
{
VC_CONTAINER_STATUS_T status;
VC_CONTAINER_MODULE_T *module = p_ctx->priv->module;
VC_CONTAINER_TRACK_MODULE_T *track_module = 0;
uint32_t i, prev_packet_num = 0, next_packet_num;
bool eos = false;
/* Sanity checking */
if(track >= p_ctx->tracks_num) return VC_CONTAINER_ERROR_FAILED;
track_module = p_ctx->tracks[track]->priv->module;
if(!track_module->num_index_entries) return VC_CONTAINER_ERROR_UNSUPPORTED_OPERATION;
if(!track_module->index_time_interval) return VC_CONTAINER_ERROR_CORRUPTED;
status = SEEK(p_ctx, track_module->index_offset);
if(status != VC_CONTAINER_SUCCESS) return status;
/* Loop through all the entries in the index */
for(i = 0; i < track_module->num_index_entries; i++)
{
next_packet_num = READ_U32(p_ctx, "Packet Number");
SKIP_U16(p_ctx, "Packet Count");
if(next_packet_num > *packet_num) break;
if(STREAM_STATUS(p_ctx) != VC_CONTAINER_SUCCESS) break;
prev_packet_num = next_packet_num;
}
if(i == track_module->num_index_entries ) eos = true;
if(STREAM_STATUS(p_ctx) == VC_CONTAINER_SUCCESS && !eos)
{
if(forward) *packet_num = next_packet_num;
else *packet_num = prev_packet_num;
}
if(eos && track_module->index_incomplete) return VC_CONTAINER_ERROR_INCOMPLETE_DATA;
else if(eos) return VC_CONTAINER_ERROR_EOS;
else return STREAM_STATUS(p_ctx);
}
#endif
/*****************************************************************************/
static VC_CONTAINER_STATUS_T asf_reader_find_next_frame( VC_CONTAINER_T *p_ctx,
unsigned int track, ASF_PACKET_STATE *p_state, bool keyframe, bool timeout )
@@ -105,11 +105,6 @@ static VC_CONTAINER_STATUS_T asf_write_object_ext_stream_properties( VC_CONTAINE
static VC_CONTAINER_STATUS_T asf_write_object_simple_index( VC_CONTAINER_T *p_ctx );
static VC_CONTAINER_STATUS_T asf_write_object_index( VC_CONTAINER_T *p_ctx );
static VC_CONTAINER_STATUS_T asf_write_object_data( VC_CONTAINER_T *p_ctx );
#if 0
static VC_CONTAINER_STATUS_T asf_write_object_codec_list( VC_CONTAINER_T *p_ctx );
static VC_CONTAINER_STATUS_T asf_write_object_content_description( VC_CONTAINER_T *p_ctx );
static VC_CONTAINER_STATUS_T asf_write_object_stream_bitrate_props( VC_CONTAINER_T *p_ctx );
#endif
static const GUID_T asf_guid_header = {0x75B22630, 0x668E, 0x11CF, {0xA6, 0xD9, 0x00, 0xAA, 0x00, 0x62, 0xCE, 0x6C}};
static const GUID_T asf_guid_file_props = {0x8CABDCA1, 0xA947, 0x11CF, {0x8E, 0xE4, 0x00, 0xC0, 0x0C, 0x20, 0x53, 0x65}};
@@ -148,12 +143,6 @@ static struct {
{ASF_OBJECT_TYPE_INDEX, &asf_guid_index, "index", asf_write_object_index},
{ASF_OBJECT_TYPE_HEADER_EXT, &asf_guid_header_ext, "header extension", asf_write_object_header_ext},
{ASF_OBJECT_TYPE_HEADER_EXT_INTERNAL, &asf_guid_header_ext, "header extension", asf_write_object_header_ext_internal},
#if 0
{ASF_OBJECT_TYPE_CODEC_LIST, &asf_guid_codec_list, "codec list", asf_write_object_codec_list},
{ASF_OBJECT_TYPE_CONTENT_DESCRIPTION, &asf_guid_content_description, "content description", asf_write_object_content_description},
{ASF_OBJECT_TYPE_EXT_CONTENT_DESCRIPTION, &asf_guid_ext_content_description, "extended content description", 0},
{ASF_OBJECT_TYPE_STREAM_BITRATE_PROPS, &asf_guid_stream_bitrate_props, "stream bitrate properties", asf_write_object_stream_bitrate_props},
#endif
{ASF_OBJECT_TYPE_UNKNOWN, 0, "unknown", 0}
};
@@ -55,12 +55,6 @@ static struct {
{VC_CONTAINER_CODEC_AC3, WAVE_FORMAT_ESST_AC3}, /**< AC-3 padded for S/PDIF */
{VC_CONTAINER_CODEC_EAC3, WAVE_FORMAT_DVM},
{VC_CONTAINER_CODEC_DTS, WAVE_FORMAT_DTS},
#if 0
{CODEC_G726, WAVE_FORMAT_G726_ADPCM},
{CODEC_G726, WAVE_FORMAT_DF_G726},
{CODEC_G726, WAVE_FORMAT_G726ADPCM},
{CODEC_G726, WAVE_FORMAT_PANASONIC_G726},
#endif
{VC_CONTAINER_CODEC_MP4A, WAVE_FORMAT_AAC},
{VC_CONTAINER_CODEC_MP4A, WAVE_FORMAT_MP4A},
{VC_CONTAINER_CODEC_ATRAC3, WAVE_FORMAT_SONY_SCX},
@@ -767,23 +767,6 @@ static VC_CONTAINER_FOURCC_T mkv_codecid_to_fourcc(const char *codecid,
return codecid_to_fourcc_table[i].fourcc;
}
#if 0
/** Find the track associated with an MKV track number */
static VC_CONTAINER_TRACK_T *mkv_reader_find_track( VC_CONTAINER_T *p_ctx, unsigned int mkv_track_num)
{
VC_CONTAINER_TRACK_T *p_track = 0;
unsigned int i;
for(i = 0; i < p_ctx->tracks_num; i++)
if(p_ctx->tracks[i]->priv->module->number == mkv_track_num) break;
if(i < p_ctx->tracks_num) /* We found it */
p_track = p_ctx->tracks[i];
return p_track;
}
#endif
/** Base function used to read an MKV/EBML element header.
* This will read the element header do lots of sanity checking and return the element id
* and the size of the data contained in the element */
@@ -1700,10 +1683,6 @@ static VC_CONTAINER_STATUS_T mkv_find_next_element(VC_CONTAINER_T *p_ctx,
return VC_CONTAINER_ERROR_NOT_FOUND;
status = mkv_read_element_data(p_ctx, element, element_size, INT64_C(1) << 30);
#if 0
if(element_size < MKV_MAX_ELEMENT_SIZE) SKIP_BYTES(p_ctx, element_size);
else SEEK(p_ctx, STREAM_POSITION(p_ctx) + element_size);
#endif
} while (status == VC_CONTAINER_SUCCESS && STREAM_STATUS(p_ctx) == VC_CONTAINER_SUCCESS);
if(STREAM_STATUS(p_ctx) != VC_CONTAINER_SUCCESS)
@@ -306,18 +306,12 @@ static VC_CONTAINER_STATUS_T mp4_read_box_header( VC_CONTAINER_T *p_ctx, int64_t
return VC_CONTAINER_ERROR_CORRUPTED;
}
#if 0
/* It is valid for a box to have a zero size (i.e unknown) if it is the last one */
if(*box_size == 0 && size >= 0) *box_size = size;
else if(*box_size == 0) *box_size = INT64_C(-1);
#else
if(*box_size <= 0)
{
LOG_DEBUG(p_ctx, "box %4.4s has an invalid size (%"PRIi64")",
(const char *)box_type, *box_size);
return VC_CONTAINER_ERROR_CORRUPTED;
}
#endif
/* Sanity check box size against parent */
if(size >= 0 && *box_size > size)
@@ -474,10 +474,6 @@ static VC_CONTAINER_STATUS_T mp4_write_box_minf( VC_CONTAINER_T *p_ctx )
status = mp4_write_box(p_ctx, MP4_BOX_TYPE_VMHD);
else if(track->format->es_type == VC_CONTAINER_ES_TYPE_AUDIO)
status = mp4_write_box(p_ctx, MP4_BOX_TYPE_SMHD);
#if 0
else if(track->format->es_type == VC_CONTAINER_ES_TYPE_SUBPICTURE)
/*FIXME */;
#endif
if(status != VC_CONTAINER_SUCCESS) return status;
status = mp4_write_box(p_ctx, MP4_BOX_TYPE_DINF);
@@ -597,10 +593,6 @@ static VC_CONTAINER_STATUS_T mp4_write_box_stsd( VC_CONTAINER_T *p_ctx )
status = mp4_write_box_extended(p_ctx, MP4_BOX_TYPE_VIDE, track->priv->module->fourcc);
else if(track->format->es_type == VC_CONTAINER_ES_TYPE_AUDIO)
status = mp4_write_box_extended(p_ctx, MP4_BOX_TYPE_SOUN, track->priv->module->fourcc);
#if 0
else if(track->format->es_type == VC_CONTAINER_ES_TYPE_SUBPICTURE)
/*FIXME*/;
#endif
return status;
}
@@ -1290,13 +1282,6 @@ static VC_CONTAINER_STATUS_T mp4_writer_add_sample( VC_CONTAINER_T *p_ctx,
track_module->sample_table[MP4_SAMPLE_TABLE_STTS].entries++; /* time to sample */
p_ctx->size += track_module->sample_table[MP4_SAMPLE_TABLE_STTS].entry_size;
#if 0
delta_ts = packet->dts - track_module->timestamp;
track_module->timestamp = packet->dts;
if(!track_module->samples) track_module->delta_ts =
if()
#endif
/* Is it a new chunk ? */
if(module->sample_offset != track_module->offset)
{
@@ -368,12 +368,6 @@ static VC_CONTAINER_STATUS_T mpga_reader_read( VC_CONTAINER_T *p_ctx,
module->frame_index++;
module->frame_offset += module->frame_size;
module->frame_time_pos = mpga_calculate_frame_time(p_ctx);
#if 0 /* FIXME: is this useful e.g. progressive download? */
module->num_frames = MAX(module->num_frames, module->frame_index);
module->data_size = MAX(module->data_size, module->frame_offset);
p_ctx->duration = MAX(p_ctx->duration, mpga_calculate_frame_time(p_ctx));
#endif
}
return status == VC_CONTAINER_SUCCESS ? STREAM_STATUS(p_ctx) : status;
@@ -51,13 +51,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#define SVP_CREATED_WD_TIMER (1 << 4)
/* Hard-coded camera parameters */
#if 0
#define SVP_CAMERA_WIDTH 1920
#define SVP_CAMERA_HEIGHT 1080
#else
#define SVP_CAMERA_WIDTH 1280
#define SVP_CAMERA_HEIGHT 720
#endif
#define SVP_CAMERA_FRAMERATE 30
#define SVP_CAMERA_DURATION_MS 10000
@@ -586,15 +586,6 @@ static int AccessVideoCoreMemory( VC_MEM_ACCESS_HANDLE_T vcHandle,
}
vcMemAddr = TO_VC_MEM_ADDR(ALIAS_NORMAL( vcMemAddr ));
#if 0
if ( (vcMemAddr < vcHandle->vcMemBase) ||
(vcMemAddr > vcHandle->vcMemEnd) )
{
ERR( "Memory address 0x%08x is outside range 0x%08x-0x%08x", vcMemAddr,
vcHandle->vcMemBase, vcHandle->vcMemEnd );
return 0;
}
#endif
if (( vcMemAddr + numBytes - 1) > vcHandle->vcMemEnd )
{
ERR( "Memory address 0x%08x + numBytes 0x%08zx is > memory end 0x%08x",
@@ -1403,11 +1403,6 @@ static MMAL_STATUS_T test_container_write(VC_CONTAINER_T *container, MMAL_BUFFER
memset(&packet, 0, sizeof(packet));
static int first_fragment = 1;
#if 0
if (buffer->flags & MMAL_BUFFER_HEADER_FLAG_CONFIG)
buffer->length = 0; /* Discard codec config data arriving in buffers */
#endif
if (buffer->length == 0)
return MMAL_SUCCESS;
@@ -197,8 +197,4 @@ EGLAPI void EGLAPIENTRY BEGL_GetDefaultDriverInterfaces(BEGL_DriverInterfaces *i
#endif /* ABSTRACT_PLATFORM */
#if 0
#include "interface/khronos/common/khrn_client_mangle.h"
#endif
#endif /* __eglplatform_h */
@@ -200,16 +200,6 @@ typedef uint64_t khronos_uint64_t;
#define KHRONOS_SUPPORT_INT64 1
#define KHRONOS_SUPPORT_FLOAT 1
#elif 0
/*
* Hypothetical platform with no float or int64 support
*/
typedef int khronos_int32_t;
typedef unsigned int khronos_uint32_t;
#define KHRONOS_SUPPORT_INT64 0
#define KHRONOS_SUPPORT_FLOAT 0
#else
/*
@@ -73,28 +73,6 @@ static MMAL_STATUS_T splitter_component_destroy(MMAL_COMPONENT_T *component)
/** Enable processing on a port */
static MMAL_STATUS_T splitter_port_enable(MMAL_PORT_T *port, MMAL_PORT_BH_CB_T cb)
{
#if 0
MMAL_COMPONENT_T *component = port->component;
uint32_t buffer_num, buffer_size;
unsigned int i;
/* Find the max and apply that to all ports */
buffer_num = component->input[0]->buffer_num;
buffer_size = component->input[0]->buffer_size;
for (i = 0; i < component->output_num; i++)
{
buffer_num = MMAL_MAX(buffer_num, component->output[i]->buffer_num);
buffer_size = MMAL_MAX(buffer_num, component->output[i]->buffer_size);
}
component->input[0]->buffer_num = buffer_num;
component->input[0]->buffer_size = buffer_size;
for (i = 0; i < component->output_num; i++)
{
component->output[i]->buffer_num = buffer_num;
component->output[i]->buffer_size = buffer_num;
}
#endif
MMAL_PARAM_UNUSED(cb);
if (port->buffer_size)
if (port->type == MMAL_PORT_TYPE_OUTPUT)
@@ -531,26 +531,3 @@ const MMALOMX_PARAM_TRANSLATION_T mmalomx_param_xlator_camera[] = {
OMX_IndexParamSWSaturationDisable),
MMALOMX_PARAM_TERMINATE()
};
#if 0 /* Conversions which are still left to implement */
MMALOMX_PARAM_CUSTOM(MMAL_PARAMETER_CAMERA_CONFIG, MMAL_PARAMETER_CAMERA_CONFIG_T,
0, 0, mmal_ril_param_set_cam_config),
MMALOMX_PARAM_STRAIGHT_MAPPING(MMAL_PARAMETER_EXPOSURE_COMP, MMAL_PARAMETER_INT32_T,
OMX_IndexConfigCommonExposureValue, OMX_CONFIG_EXPOSUREVALUETYPE, 0),
MMALOMX_PARAM_STRAIGHT_MAPPING(MMAL_PARAMETER_EXP_METERING_MODE, MMAL_PARAMETER_EXPOSUREMETERINGMODE_T,
OMX_IndexConfigCommonExposureValue, OMX_CONFIG_EXPOSUREVALUETYPE, 0),
MMALOMX_PARAM_STRAIGHT_MAPPING(MMAL_PARAMETER_ISO, MMAL_PARAMETER_UINT32_T,
OMX_IndexConfigCommonExposureValue, OMX_CONFIG_EXPOSUREVALUETYPE, 0),
MMALOMX_PARAM_STRAIGHT_MAPPING(MMAL_PARAMETER_FOCUS_STATUS, MMAL_PARAMETER_FOCUS_STATUS_T,
OMX_IndexConfigCommonFocusStatus, OMX_PARAM_FOCUSSTATUSTYPE, mmalomx_param_mapping_focus_status),
MMALOMX_PARAM_STRAIGHT_MAPPING(MMAL_PARAMETER_EXIF, MMAL_PARAMETER_EXIF_T,
OMX_IndexConfigMetadataItem, OMX_CONFIG_METADATAITEMTYPE, 0),
MMALOMX_PARAM_STRAIGHT_MAPPING(MMAL_PARAMETER_FACE_TRACK_RESULTS, MMAL_PARAMETER_FACE_TRACK_RESULTS_T,
OMX_IndexConfigCommonFaceDetectionRegion, OMX_CONFIG_FACEDETECTIONREGIONTYPE, 0),
MMALOMX_PARAM_STRAIGHT_MAPPING(MMAL_PARAMETER_ENABLE_RAW_CAPTURE, MMAL_PARAMETER_BOOLEAN_T,
OMX_IndexConfigCaptureRawImageURI, OMX_PARAM_CONTENTURITYPE, 0),
MMALOMX_PARAM_PASSTHROUGH_PORTLESS(MMAL_PARAMETER_DPF_FILE, MMAL_PARAMETER_URI_T,
OMX_IndexParamDynamicParameterFile, OMX_PARAM_CONTENTURITYPE),
MMALOMX_PARAM_PASSTHROUGH_PORTLESS(MMAL_PARAMETER_FOCUS_REGIONS, ,
OMX_IndexConfigCommonFocusRegionXY, ),
#endif
@@ -150,8 +150,3 @@ const MMALOMX_PARAM_TRANSLATION_T mmalomx_param_xlator_misc[] = {
mmalomx_param_mapping_time),
MMALOMX_PARAM_TERMINATE()
};
#if 0
/* Conversions which are not done here. Should part of the core. */
MMAL_PARAMETER_SUPPORTED_ENCODINGS
#endif
@@ -350,18 +350,6 @@ static VCOS_STATUS_T help_cmd( VCOS_CMD_PARAM_T *param )
{
VCOS_CMD_T *found_entry;
#if 0
{
int arg_idx;
vcos_log_trace( "%s: argc = %d", __func__, param->argc );
for ( arg_idx = 0; arg_idx < param->argc; arg_idx++ )
{
vcos_log_trace( "%s: argv[%d] = '%s'", __func__, arg_idx, param->argv[arg_idx] );
}
}
#endif
/* If there is an argument after the word help, then we want to print
* help for that command.
*/
@@ -450,19 +438,6 @@ static VCOS_STATUS_T execute_cmd( VCOS_CMD_PARAM_T *param, VCOS_CMD_T *cmd_entry
const char *cmdStr;
VCOS_CMD_T *found_entry;
#if 0
{
int arg_idx;
vcos_cmd_printf( param, "%s: argc = %d", __func__, param->argc );
for ( arg_idx = 0; arg_idx < param->argc; arg_idx++ )
{
vcos_cmd_printf( param, " argv[%d] = '%s'", arg_idx, param->argv[arg_idx] );
}
vcos_cmd_printf( param, "\n" );
}
#endif
if ( param->argc <= 1 )
{
/* No command specified */
@@ -315,25 +315,6 @@ int vc_hostfs_open(const char *inPath, int vc_oflag)
// Replace all '\' with '/'
backslash_to_slash( path );
#if 0
s = path + strlen( path );
if (( s - path ) >= 4 )
{
if ( strcasecmp( &s[ -4 ], ".vll" ) == 0 )
{
// The Videocore is asking for a .vll file. Since it isn't consistent with
// the case, we convert .vll files to all lowercase.
"vc_hostfs_open: '%s'", path ;
s--; // backup to the last character (*s is on the '\0')
while (( s >= path ) && ( *s != '/' ))
{
*s = tolower( *s );
s--;
}
}
}
#endif
DEBUG_MINOR("vc_hostfs_open: '%s'", path);
flags = O_RDONLY;
@@ -28,22 +28,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#ifndef VCHOST_CONFIG_H
#define VCHOST_CONFIG_H
#include "interface/vcos/vcos.h"
#if 0
/* Types that map onto VideoCore's types of the same name. */
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef short int16_t;
typedef long int32_t;
typedef unsigned long uint32_t;
typedef long long int64_t;
typedef unsigned long long uint64_t;
#ifndef vc_assert
#define vc_assert(cond) vcos_assert(cond)
#endif
#endif
#include "../../vcos/vcos.h"
/* On this platform we need to be able to release the host-side software resources. */
extern void vc_os_close(void);
@@ -2206,25 +2206,6 @@ static int vc_fs_message_handler( FILESERV_MSG_T* msg, uint32_t nbytes )
}
}
break;
#if 0 // I don't think host systems are ready for these yet
case VC_FILESYS_SCANDISK:
vc_hostfs_scandisk((const char *)msg->data);
rlen = 0;
break;
case VC_FILESYS_CHKDSK:
i = vc_hostfs_chkdsk((const char *)msg->data, msg->params[0]);
if (i < 0) {
retval = FILESERV_RESP_ERROR;
rlen = 0;
} else {
msg->params[0] = (uint32_t)i;
rlen = 4;
}
break;
#endif
case VC_FILESYS_WRITE:
{
uint32_t fd = msg->params[0];
@@ -28,8 +28,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#ifndef VC_VCHI_GENCMD_H
#define VC_VCHI_GENCMD_H
#include "vchost_platform_config.h"
#include "interface/vchi/vchi.h"
#include "interface/vcos/vcos.h" //for VCHPRE_ abd VCHPOST_ macro's for func declaration
#include "../vchi/vchi.h"
#include "../vcos/vcos.h" /* for VCHPRE_ abd VCHPOST_ macro's for func declaration */
/* Initialise general command service. Returns it's interface number. This initialises
the host side of the interface, it does not send anything to VideoCore. */
-17
View File
@@ -105,23 +105,6 @@ typedef enum bool_e
/*{{{ Debugging and profiling macros */
#if 0
/* There's already an assert_once in <logging/logging.h> */
#ifdef DEBUG
#define assert_once(x) \
{ \
static uint8_t ignore = 0; \
if(!ignore) \
{ \
assert(x); \
ignore++; \
} \
}
#else
#define assert_once(x) (void)0
#endif
#endif /* 0 */
#if defined(__HIGHC__) && !defined(NDEBUG)
/* HighC lacks a __FUNCTION__ preproc symbol... :( */
#define profile_rename(name) _ASM(".global " name "\n" name ":\n")
-5
View File
@@ -34,11 +34,6 @@ extern "C" {
#define VK_MAKE_VERSION(major, minor, patch) \
(((major) << 22) | ((minor) << 12) | (patch))
/* DEPRECATED: This define has been removed. Specific version defines (e.g. VK_API_VERSION_1_0), or the VK_MAKE_VERSION macro, should be used instead. */
#if 0
#define VK_API_VERSION VK_MAKE_VERSION(1, 0, 0) /* Patch version should always be set to 0 */
#endif
/* Vulkan 1.0 version number */
#define VK_API_VERSION_1_0 VK_MAKE_VERSION(1, 0, 0)/* Patch version should always be set to 0 */
-4
View File
@@ -721,10 +721,6 @@ static void twoxbr_generic_packets(void *data,
if (filt->in_fmt == SOFTFILTER_FMT_RGB565)
packets[i].work = twoxbr_work_cb_rgb565;
#if 0
else if (filt->in_fmt == SOFTFILTER_FMT_RGB4444)
packets[i].work = twoxbr_work_cb_rgb4444;
#endif
else if (filt->in_fmt == SOFTFILTER_FMT_XRGB8888)
packets[i].work = twoxbr_work_cb_xrgb8888;
packets[i].thread_data = thr;
-4
View File
@@ -334,10 +334,6 @@ static void twoxsai_generic_packets(void *data,
if (filt->in_fmt == SOFTFILTER_FMT_RGB565)
packets[i].work = twoxsai_work_cb_rgb565;
#if 0
else if (filt->in_fmt == SOFTFILTER_FMT_RGB4444)
packets[i].work = twoxsai_work_cb_rgb4444;
#endif
else if (filt->in_fmt == SOFTFILTER_FMT_XRGB8888)
packets[i].work = twoxsai_work_cb_xrgb8888;
packets[i].thread_data = thr;
+1 -6
View File
@@ -235,8 +235,7 @@ static void lq2x_generic_packets(void *data,
unsigned y_start = (height * i) / filt->threads;
unsigned y_end = (height * (i + 1)) / filt->threads;
thr->out_data = (uint8_t*)output + y_start * LQ2X_SCALE * output_stride;
thr->in_data = (const uint8_t*)input + y_start * input_stride;
thr->out_pitch = output_stride;
thr->in_data = (const uint8_t*)input + y_start * input_stride; thr->out_pitch = output_stride;
thr->in_pitch = input_stride;
thr->width = width;
thr->height = y_end - y_start;
@@ -248,10 +247,6 @@ static void lq2x_generic_packets(void *data,
if (filt->in_fmt == SOFTFILTER_FMT_RGB565)
packets[i].work = lq2x_work_cb_rgb565;
#if 0
else if (filt->in_fmt == SOFTFILTER_FMT_RGB4444)
packets[i].work = lq2x_work_cb_rgb4444;
#endif
else if (filt->in_fmt == SOFTFILTER_FMT_XRGB8888)
packets[i].work = lq2x_work_cb_xrgb8888;
packets[i].thread_data = thr;
-10
View File
@@ -253,12 +253,6 @@ static void *phosphor2x_generic_create(const struct softfilter_config *config,
filt->scanrange_low = 0.5;
filt->scanrange_high = 0.65;
#if 0
/* Initialize lookup tables: */
phosphorBloom = (scaleTimes .*
linspace(0, 1, 255) .^ (1/2.2)) + scaleAdd;
/* Not exactly sure of order of operations here ... */
#endif
for (i = 0; i < 256; i++)
{
filt->phosphor_bloom_8888[i] =
@@ -446,10 +440,6 @@ static void phosphor2x_generic_packets(void *data,
if (filt->in_fmt == SOFTFILTER_FMT_RGB565)
packets[i].work = phosphor2x_work_cb_rgb565;
#if 0
else if (filt->in_fmt == SOFTFILTER_FMT_RGB4444)
packets[i].work = phosphor2x_work_cb_rgb4444;
#endif
if (filt->in_fmt == SOFTFILTER_FMT_XRGB8888)
packets[i].work = phosphor2x_work_cb_xrgb8888;
packets[i].thread_data = thr;
+2 -1
View File
@@ -458,7 +458,8 @@ void gfx_widgets_set_leaderboard_display(unsigned id, const char* value)
if (i == state->tracker_count)
state->tracker_info[state->tracker_count++].id = id;
strncpy(state->tracker_info[i].display, value, sizeof(state->tracker_info[i].display));
strlcpy(state->tracker_info[i].display, value,
sizeof(state->tracker_info[i].display));
{
unsigned width = CHEEVO_LBOARD_DISPLAY_PADDING * 2;
+46 -22
View File
@@ -17,6 +17,7 @@
#include "bsvmovie.h"
#include <retro_endianness.h>
#include <stdint.h>
#include "../input_driver.h"
#include "../../retroarch.h"
#include "../../state_manager.h"
@@ -144,7 +145,8 @@ static bool bsv_movie_peek_frame_info(bsv_movie_t *movie, uint8_t *token, uint64
if (intfstream_read(movie->file, &(state_length), sizeof(uint64_t)) != sizeof(uint64_t))
goto end;
state_length = swap_if_big64(state_length);
ret = intfstream_seek(movie->file, state_length, SEEK_CUR) >= 0;
if (intfstream_seek(movie->file, state_length, SEEK_CUR) < 0)
goto end;
}
else if (tok == REPLAY_TOKEN_CHECKPOINT2_FRAME)
{
@@ -156,7 +158,8 @@ static bool bsv_movie_peek_frame_info(bsv_movie_t *movie, uint8_t *token, uint64
if (intfstream_read(movie->file, &(state_length), sizeof(uint32_t)) != sizeof(uint32_t))
goto end;
/* Seek past the state data */
ret = intfstream_seek(movie->file, state_length, SEEK_CUR) >= 0;
if (intfstream_seek(movie->file, state_length, SEEK_CUR) < 0)
goto end;
}
/* We are already at the end of the frame */
else if (tok == REPLAY_TOKEN_REGULAR_FRAME) { }
@@ -668,7 +671,7 @@ int64_t bsv_movie_write_checkpoint(bsv_movie_t *handle, uint8_t compression, uin
uint8_t *swap;
size_t size_swap;
int64_t ret = -1;
uint32_t encoded_size, compressed_encoded_size, size_;
uint32_t encoded_size = 0, compressed_encoded_size, size_ = 0;
uint8_t *encoded_data = NULL, *compressed_encoded_data = NULL;
bool owns_encoded = false, owns_compressed_encoded = false;
retro_ctx_serialize_info_t serial_info;
@@ -689,15 +692,17 @@ int64_t bsv_movie_write_checkpoint(bsv_movie_t *handle, uint8_t compression, uin
switch (encoding)
{
case REPLAY_CHECKPOINT2_ENCODING_RAW:
encoded_size = serial_info.size;
/* If serial_info.size > uint32 max, we have bigger problems on our hands */
encoded_size = (uint32_t)serial_info.size;
encoded_data = (uint8_t*)serial_info.data;
break;
#ifdef HAVE_STATESTREAM
case REPLAY_CHECKPOINT2_ENCODING_STATESTREAM:
encoded_size = serial_info.size + serial_info.size / 2;
/* encoded size estimate or actual encoded state size should not exceed uint32 max */
encoded_size = (uint32_t)(serial_info.size + serial_info.size / 2);
encoded_data = (uint8_t*)malloc(encoded_size);
owns_encoded = true;
encoded_size = bsv_movie_write_deduped_state(handle, (uint8_t*)serial_info.data,
encoded_size = (uint32_t)bsv_movie_write_deduped_state(handle, (uint8_t*)serial_info.data,
serial_info.size, encoded_data, encoded_size);
break;
#endif
@@ -723,23 +728,24 @@ int64_t bsv_movie_write_checkpoint(bsv_movie_t *handle, uint8_t compression, uin
ret = -1;
goto exit;
}
compressed_encoded_size = zlib_compressed_encoded_size;
compressed_encoded_size = (uint32_t)zlib_compressed_encoded_size;
break;
}
#endif
#ifdef HAVE_ZSTD
case REPLAY_CHECKPOINT2_COMPRESSION_ZSTD:
{
size_t compressed_encoded_size_big = ZSTD_compressBound(encoded_size);
compressed_encoded_data = (uint8_t*)calloc(compressed_encoded_size_big, sizeof(uint8_t));
size_t compressed_encoded_size_zstd = ZSTD_compressBound(encoded_size);
compressed_encoded_data = (uint8_t*)calloc(compressed_encoded_size_zstd, sizeof(uint8_t));
owns_compressed_encoded = true;
compressed_encoded_size_big = ZSTD_compress(compressed_encoded_data, compressed_encoded_size_big, encoded_data, encoded_size, 3);
if (ZSTD_isError(compressed_encoded_size_big))
compressed_encoded_size_zstd = ZSTD_compress(compressed_encoded_data, compressed_encoded_size_zstd, encoded_data, encoded_size, 3);
if (ZSTD_isError(compressed_encoded_size_zstd))
{
ret = -1;
goto exit;
}
compressed_encoded_size = compressed_encoded_size_big;
/* Have to cast after checking the error flags, not before */
compressed_encoded_size = (uint32_t)compressed_encoded_size_zstd;
break;
}
#endif
@@ -749,7 +755,7 @@ int64_t bsv_movie_write_checkpoint(bsv_movie_t *handle, uint8_t compression, uin
goto exit;
}
/* uncompressed, unencoded size */
size_ = swap_if_big32(serial_info.size);
size_ = swap_if_big32((uint32_t)serial_info.size);
if (intfstream_write(handle->file, &size_, sizeof(uint32_t)) < (int64_t)sizeof(uint32_t))
{
ret = -1;
@@ -1127,7 +1133,12 @@ bool replay_get_serialized_data(void* buffer)
buf = ((uint8_t *)buffer) + sizeof(uint32_t);
intfstream_rewind(handle->file);
read_amt = intfstream_read(handle->file, buf, file_end);
((uint32_t *)buffer)[1+REPLAY_HEADER_FRAME_COUNT_INDEX] = swap_if_big32(handle->frame_counter);
if (handle->frame_counter > UINT32_MAX) {
RARCH_ERR("[Replay] Frame counter too big to fit in 32 bits\n");
return false;
}
/* Bounds checked above, this cast is safe */
((uint32_t *)buffer)[1+REPLAY_HEADER_FRAME_COUNT_INDEX] = swap_if_big32((uint32_t)(handle->frame_counter));
if (read_amt != file_end)
RARCH_ERR("[Replay] Failed to write correct number of replay bytes into state file: %d / %d.\n",
read_amt, file_end);
@@ -1199,11 +1210,13 @@ bool replay_check_same_timeline(bsv_movie_t *movie,
intfstream_seek(movie->file, sizeof(uint32_t), SEEK_CUR);
intfstream_seek(check_stream, sizeof(uint32_t), SEEK_CUR);
}
keycount1 = UINT8_MAX;
keycount2 = UINT8_MAX;
if (intfstream_read(movie->file, &keycount1, 1) < 1 ||
intfstream_read(check_stream, &keycount2, 1) < 1 ||
keycount1 != keycount2)
{
RARCH_ERR("[Replay] Replay checkpoints disagree on key count, %d vs %d\n", keycount1, keycount2);
RARCH_ERR("[Replay] Replay checkpoints disagree on key count, %d vs %d (255 means read error)\n", keycount1, keycount2);
ret = false;
goto exit;
}
@@ -1585,7 +1598,8 @@ int64_t bsv_movie_write_deduped_state(bsv_movie_t *movie, uint8_t *state,
/* write "here is a new block" and new block to file */
rmsgpack_write_int(out_stream, BSV_IFRAME_NEW_BLOCK_TOKEN);
rmsgpack_write_int(out_stream, found_block.index);
rmsgpack_write_bin(out_stream, state+block_start, block_byte_size);
/* Cast is fine, a single block can't be super big */
rmsgpack_write_bin(out_stream, state+block_start, (uint32_t)block_byte_size);
}
else
reused_blocks++;
@@ -1597,7 +1611,8 @@ int64_t bsv_movie_write_deduped_state(bsv_movie_t *movie, uint8_t *state,
/* write "here is a new superblock" and new superblock to file */
rmsgpack_write_int(out_stream, BSV_IFRAME_NEW_SUPERBLOCK_TOKEN);
rmsgpack_write_int(out_stream, found_block.index);
rmsgpack_write_array_header(out_stream, superblock_size);
/* Cast is fine, a single superblock can't be billions of blocks long */
rmsgpack_write_array_header(out_stream, (uint32_t)superblock_size);
for (i = 0; i < superblock_size; i++)
rmsgpack_write_int(out_stream, superblock_buf[i]);
}
@@ -1610,7 +1625,8 @@ int64_t bsv_movie_write_deduped_state(bsv_movie_t *movie, uint8_t *state,
/* uint32s_index_commit(movie->superblocks); */
/* write "here is the superblock seq" and superblock seq to file */
rmsgpack_write_int(out_stream, BSV_IFRAME_SUPERBLOCK_SEQ_TOKEN);
rmsgpack_write_array_header(out_stream, superblock_count);
/* Cast is fine, we won't have billions of superblocks */
rmsgpack_write_array_header(out_stream, (uint32_t)superblock_count);
for (i = 0; i < superblock_count; i++)
rmsgpack_write_int(out_stream, movie->superblock_seq[i]);
free(superblock_buf);
@@ -1647,6 +1663,10 @@ bool bsv_movie_read_deduped_state(bsv_movie_t *movie, uint8_t *encoded, size_t e
free(movie->superblock_seq);
movie->superblock_seq = NULL;
}
if (!movie->cur_save) {
RARCH_ERR("[STATESTREAM] movie has no current serialized save\n");
goto exit;
}
total_decode_count++;
rmsgpack_dom_read_with(read_mem, &item, reader_state);
if (item.type != RDT_INT && item.type != RDT_UINT)
@@ -1684,7 +1704,8 @@ bool bsv_movie_read_deduped_state(bsv_movie_t *movie, uint8_t *encoded, size_t e
RARCH_ERR("[STATESTREAM] new block index type is wrong\n");
goto exit;
}
index = item.val.uint_;
/* Block indexes must be 32bit */
index = (uint32_t)item.val.uint_;
rmsgpack_dom_read_with(read_mem, &item, reader_state);
if (item.type != RDT_BINARY)
{
@@ -1715,7 +1736,8 @@ bool bsv_movie_read_deduped_state(bsv_movie_t *movie, uint8_t *encoded, size_t e
RARCH_ERR("[STATESTREAM] new superblock index type is wrong\n");
goto exit;
}
index = item.val.uint_;
/* Block indices are 32-bit */
index = (uint32_t)item.val.uint_;
if (rmsgpack_dom_read_with(read_mem, &item, reader_state) < 0)
{
RARCH_ERR("[STATESTREAM] array read failed\n");
@@ -1738,7 +1760,8 @@ bool bsv_movie_read_deduped_state(bsv_movie_t *movie, uint8_t *encoded, size_t e
{
struct rmsgpack_dom_value inner_item = item.val.array.items[i];
/* assert(inner_item.type == RDT_INT || inner_item.type == RDT_UINT); */
superblock[i] = inner_item.val.uint_;
/* Superblock indices are 32-bit */
superblock[i] = (uint32_t)inner_item.val.uint_;
}
if (!uint32s_index_insert_exact(movie->superblocks, index, superblock, movie->frame_counter))
{
@@ -1766,7 +1789,8 @@ bool bsv_movie_read_deduped_state(bsv_movie_t *movie, uint8_t *encoded, size_t e
uint32_t *superblock;
struct rmsgpack_dom_value inner_item = item.val.array.items[i];
/* assert(inner_item.type == RDT_INT || inner_item.type == RDT_UINT); */
uint32_t superblock_idx = inner_item.val.uint_;
/* Superblock indices are 32-bit */
uint32_t superblock_idx = (uint32_t)inner_item.val.uint_;
/* if this superblock is the same as last time, no need to scan the blocks. */
if (movie->cur_save_valid && movie->cur_save && superblock_idx == movie->superblock_seq[i])
{
+7 -2
View File
@@ -25,7 +25,7 @@
#define XXH_INLINE_ALL
#include <xxHash/xxhash.h>
#define HASHMAP_CAP (1 << 16)
#define HASHMAP_CAP 65536
#define uint32s_hash_bytes(bytes, len) XXH32(bytes,len,0)
uint32s_index_t *uint32s_index_new(size_t object_size,
@@ -283,11 +283,16 @@ void uint32s_index_pop(uint32s_index_t *index)
uint32_t idx = RBUF_LEN(index->objects)-1;
uint32_t hash = index->hashes[idx];
struct uint32s_bucket *bucket = RHMAP_PTR(index->index, hash);
uint32_t old_len = bucket->len;
if (old_len == 0) {
RARCH_ERR("[STATESTREAM] trying to pop from empty bucket\n");
return;
}
RBUF_RESIZE(index->objects, idx);
RBUF_RESIZE(index->counts, idx);
RBUF_RESIZE(index->hashes, idx);
uint32s_bucket_remove(bucket, idx);
if (bucket->len == 0)
if (old_len - 1 == 0)
{
uint32s_bucket_free(bucket);
if (!RHMAP_DEL(index->index, hash))
+12 -6
View File
@@ -915,7 +915,17 @@ static INLINE void android_input_poll_event_type_key(
{
uint8_t *buf = android_key_state[port];
int action = AKeyEvent_getAction(event);
int keysym = keycode;
/* Handle 'duplicate' inputs that correspond
* to the same RETROK_* key */
switch (keycode)
{
case AKEYCODE_DPAD_CENTER:
keysym = AKEYCODE_ENTER;
default:
break;
}
/* some controllers send both the up and down events at once
* when the button is released for "special" buttons, like menu buttons
* work around that by only using down events for meta keys (which get
@@ -924,10 +934,10 @@ static INLINE void android_input_poll_event_type_key(
switch (action)
{
case AKEY_EVENT_ACTION_UP:
BIT_CLEAR(buf, keycode);
BIT_CLEAR(buf, keysym);
break;
case AKEY_EVENT_ACTION_DOWN:
BIT_SET(buf, keycode);
BIT_SET(buf, keysym);
break;
}
@@ -1086,10 +1096,6 @@ static void handle_hotplug(android_input_t *android,
/* only use the hack if the device is one of the built-in devices */
RARCH_LOG("[Android] Special device detected: %s.\n", device_model);
{
#if 0
RARCH_LOG("[Android] - Pads Mapped: %d\n- Device Name: %s\n- IDS: %d, %d, %d",
android->pads_connected, device_name, id, pad_id1, pad_id2);
#endif
/* Remove the remote or virtual controller device if it is mapped */
if ( strstr(android->pad_states[0].name, "SHIELD Remote")
|| strstr(android->pad_states[0].name, "SHIELD Virtual Controller"))
-6
View File
@@ -181,13 +181,7 @@ static void apple_gamecontroller_joypad_poll_internal(GCController *controller,
mfi_axes[slot][3] = gp.rightThumbstick.yAxis.value * 32767.0f;
mfi_axes[slot][4] = gp.leftTrigger.value * 32767.0f;
mfi_axes[slot][5] = gp.rightTrigger.value * 32767.0f;
}
#if 0
else if (controller.microGamepad)
{
}
#endif
/* GCGamepad is deprecated */
#pragma clang diagnostic push
+1 -1
View File
@@ -1395,7 +1395,7 @@ const struct rarch_key_map rarch_key_map_android[] = {
{ AKEYCODE_TAB, RETROK_TAB },
{ AKEYCODE_CLEAR, RETROK_CLEAR },
{ AKEYCODE_ENTER, RETROK_RETURN },
{ AKEYCODE_DPAD_CENTER, RETROK_RETURN },
/* { AKEYCODE_DPAD_CENTER, RETROK_RETURN }, */ /* Duplicate - skip */
{ AKEYCODE_BREAK, RETROK_PAUSE },
{ AKEYCODE_ESCAPE, RETROK_ESCAPE },
{ AKEYCODE_SPACE, RETROK_SPACE },
+8
View File
@@ -1296,6 +1296,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
"إذا تم التعطيل، سيتم نقل الملفات إلى مجلد النسخ الاحتياطي قبل الحذف أو الاستبدال."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_AUTOMATIC,
"تلقائي"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_MANUAL,
"يدوي"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
"خدمة المزامنة السحابية"
+8
View File
@@ -1316,6 +1316,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
"Калі адключана, файлы будуць перасунутыя ў тэчку рэзервовай копіі перад іх перазапісам ці выдаленнем."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_AUTOMATIC,
"Аўтаматычная"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_MANUAL,
"Уручную"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
"Бэкенд воблачнай сінхранізацыі"
+37 -1
View File
@@ -217,6 +217,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_QUIT_RETROARCH,
"Tanca el RetroArch. La configuració es desarà en sortir."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_NOW,
"Sincronitza ara"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_NOW,
"Activa manual la sincronització al núvol."
)
MSG_HASH(
MENU_ENUM_SUBLABEL_QUIT_RETROARCH_NOSAVE,
"Tanca el RetroArch. La configuració no es desarà en sortir."
@@ -1316,6 +1324,18 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
"En desactivar-ho, els fitxers es mouen a una carpeta de còpia de seguretat abans de sobreescriure's o eliminar-se."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE,
"Mode de sincronització"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_MODE,
"Automàtic: Sincronitza RetroArch a l'inici, abans que es carreguin els nuclis. Manual: Només se sincronitza si es clica el botó 'Sincronitza ara'."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_AUTOMATIC,
"Automàtic"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
"Rerefons de la sincronització al núvol"
@@ -5051,7 +5071,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CORE_SUGGEST_ALWAYS,
"Suggereix tots els nuclis disponibles quan es carrega un nucli."
"Suggereix tots els nuclis disponibles quen es carrega un nucli manualment."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER,
@@ -14202,6 +14222,14 @@ MSG_HASH(
MSG_LIBRETRO_FRONTEND,
"Interfície d'usuari per Libretro"
)
MSG_HASH(
MSG_LOADED_STATE_FROM_SLOT,
"Carrega l'estat de la ranura: %d."
)
MSG_HASH(
MSG_LOADED_STATE_FROM_SLOT_AUTO,
"Carrega l'estat de la ranura: Automàtic."
)
MSG_HASH(
MSG_LOADING,
"Carregant"
@@ -14398,6 +14426,14 @@ MSG_HASH(
MSG_SAVED_NEW_CONFIG_TO,
"Desa la configuració a"
)
MSG_HASH(
MSG_SAVED_STATE_TO_SLOT,
"Desa l'estat a la ranura: %d."
)
MSG_HASH(
MSG_SAVED_STATE_TO_SLOT_AUTO,
"Estat desat a la ranura: Automàtic."
)
MSG_HASH(
MSG_SAVED_SUCCESSFULLY_TO,
"Desat correctament a"
+8 -4
View File
@@ -1332,6 +1332,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
"禁用后,文件会在被覆盖或删除之前移至备份文件夹。"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_AUTOMATIC,
"自动"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_MANUAL,
"手动"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
"云同步后端"
@@ -5081,10 +5089,6 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_CORE_SUGGEST_ALWAYS,
"始终建议核心"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CORE_SUGGEST_ALWAYS,
"即使已加载某个核心,仍显示所有可用的核心建议。"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER,
"使用内建媒体播放器"
+8
View File
@@ -1228,6 +1228,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
"關閉時檔案將會在覆寫或刪除前移動到備份資料夾。"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_AUTOMATIC,
"白框線 (Automatic)"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_MANUAL,
"手動"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
"雲端同步後端"
+8
View File
@@ -1260,6 +1260,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
"Pokud je tato funkce vypnuta, jsou soubory před přepsáním nebo odstraněním přesunuty do záložní složky."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_AUTOMATIC,
"Automatické"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_MANUAL,
"Ruční"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
"Backend cloudové synchronizace"
+25 -1
View File
@@ -1260,6 +1260,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
"Wenn deaktiviert, werden die Dateien in einen Sicherungsordner verschoben, bevor sie überschrieben oder gelöscht werden."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_AUTOMATIC,
"Automatisch"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_MANUAL,
"Manuell"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
"Cloud-Sync-Backend"
@@ -4955,7 +4963,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CORE_SUGGEST_ALWAYS,
"Verfügbare Cores vorschlagen, auch wenn bereits ein Core geladen ist."
"Verfügbare Cores auch dann vorschlagen, wenn ein Core manuell geladen wird."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER,
@@ -13958,6 +13966,14 @@ MSG_HASH(
MSG_LIBRETRO_FRONTEND,
"Frontend für Libretro"
)
MSG_HASH(
MSG_LOADED_STATE_FROM_SLOT,
"Spielstand geladen aus Speicherplatz: %d."
)
MSG_HASH(
MSG_LOADED_STATE_FROM_SLOT_AUTO,
"Spielstand geladen aus Speicherplatz: Automatisch."
)
MSG_HASH(
MSG_LOADING,
"Wird geladen"
@@ -14154,6 +14170,14 @@ MSG_HASH(
MSG_SAVED_NEW_CONFIG_TO,
"Konfiguration gespeichert in"
)
MSG_HASH(
MSG_SAVED_STATE_TO_SLOT,
"Spielstand gespeichert in Speicherplatz: %d."
)
MSG_HASH(
MSG_SAVED_STATE_TO_SLOT_AUTO,
"Spielstand gespeichert in Speicherplatz: Automatisch."
)
MSG_HASH(
MSG_SAVED_SUCCESSFULLY_TO,
"Erfolgreich gespeichert in"
+4
View File
@@ -1336,6 +1336,10 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
"Όταν απενεργοποιηθεί, τα αρχεία μετακινούνται σε ένα φάκελο αντιγράφων ασφαλείας πριν αντικατασταθούν ή διαγραφούν."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_MANUAL,
"Χειροκίνητο"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
"Σύστημα υποστήριξης συγχρονισμού cloud"
+37 -1
View File
@@ -217,6 +217,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_QUIT_RETROARCH,
"Abandona la aplicación RetroArch. La opción «Guardar configuración al salir» está activada."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_NOW,
"Sincronizar ahora"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_NOW,
"Inicia manualmente la sincronización en la nube."
)
MSG_HASH(
MENU_ENUM_SUBLABEL_QUIT_RETROARCH_NOSAVE,
"Abandona la aplicación RetroArch. La opción «Guardar configuración al salir» está desactivada."
@@ -1320,6 +1328,18 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
"Al desactivar esta opción, los archivos serán trasladados a una carpeta de copia de seguridad antes de ser sobrescritos o eliminados."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE,
"Modo de sincronización"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_MODE,
"Automático: inicia la sincronización al ejecutar RetroArch y al descargar un núcleo. Manual: inicia la sincronización solo al seleccionar la opción Sincronizar ahora."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_AUTOMATIC,
"Automático"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
"Servicio de sincronización en la nube"
@@ -5063,7 +5083,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CORE_SUGGEST_ALWAYS,
"Sugiere los núcleos disponibles, aunque haya otro ya cargado."
"Sugiere los núcleos disponibles, aunque haya otro cargado manualmente."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER,
@@ -14294,6 +14314,14 @@ MSG_HASH(
MSG_LIBRETRO_FRONTEND,
"Front-end para Libretro"
)
MSG_HASH(
MSG_LOADED_STATE_FROM_SLOT,
"Se ha cargado el guardado rápido de la posición: %d."
)
MSG_HASH(
MSG_LOADED_STATE_FROM_SLOT_AUTO,
"Se ha cargado el guardado rápido de la posición: automática."
)
MSG_HASH(
MSG_LOADING,
"Cargando"
@@ -14490,6 +14518,14 @@ MSG_HASH(
MSG_SAVED_NEW_CONFIG_TO,
"Se ha guardado la configuración en"
)
MSG_HASH(
MSG_SAVED_STATE_TO_SLOT,
"Se ha creado un guardado rápido en la posición: %d."
)
MSG_HASH(
MSG_SAVED_STATE_TO_SLOT_AUTO,
"Se ha creado un guardado rápido en la posición: automática."
)
MSG_HASH(
MSG_SAVED_SUCCESSFULLY_TO,
"Se han guardado los datos en"
+4
View File
@@ -1176,6 +1176,10 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
"همگام‌سازی ابری تخریبی"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_MANUAL,
"دستی"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DRIVER,
"شیوه‌نامهٔ شبکهٔ فضای ابری که باید استفاده شود."
+8 -4
View File
@@ -1288,6 +1288,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
"Kun pois käytöstä, tiedostot siirretään varmuuskopio-kansioon, ennen kuin niitä korvataan tai poistetaan."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_AUTOMATIC,
"Automaattinen"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_MANUAL,
"Manuaalinen"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
"Pilvisynkronoinnin taustaosa"
@@ -4225,10 +4233,6 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_CORE_SUGGEST_ALWAYS,
"Ehdota aina ytimiä"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CORE_SUGGEST_ALWAYS,
"Ehdota saatavilla olevia ytimiä silloinkin, kun ydin on jo ladattu."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER,
"Käytä sisäänrakennettua mediasoitinta"
+41 -1
View File
@@ -213,6 +213,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_QUIT_RETROARCH,
"Quitter l'application RetroArch. L'enregistrement de la configuration à la sortie est activé."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_NOW,
"Synchroniser maintenant"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_NOW,
"Déclencher manuellement la synchronisation avec le cloud."
)
MSG_HASH(
MENU_ENUM_SUBLABEL_QUIT_RETROARCH_NOSAVE,
"Quitter l'application RetroArch. L'enregistrement de la configuration à la sortie est désactivé."
@@ -1296,6 +1304,22 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
"Lorsque cette option est désactivée, les fichiers sont déplacés vers un dossier de sauvegarde avant d'être remplacés ou supprimés."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE,
"Mode de synchronisation"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_MODE,
"Automatique : Synchronisation au démarrage de RetroArch et lorsque les cœurs sont déchargés. Manuel : Synchronisation uniquement lorsque le bouton 'Synchroniser maintenant' est déclenché manuellement."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_AUTOMATIC,
"Automatique"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_MANUAL,
"Manuel"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
"Plateforme de synchronisation avec le Cloud"
@@ -5023,7 +5047,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CORE_SUGGEST_ALWAYS,
"Suggérer des cœurs disponibles même lorsqu'un cœur est déjà chargé."
"Suggérer des cœurs disponibles même lorsqu'un cœur est chargé manuellement."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER,
@@ -14262,6 +14286,14 @@ MSG_HASH(
MSG_LIBRETRO_FRONTEND,
"Interface pour libretro"
)
MSG_HASH(
MSG_LOADED_STATE_FROM_SLOT,
"Sauvegarde instantanée chargée depuis l'emplacement : %d."
)
MSG_HASH(
MSG_LOADED_STATE_FROM_SLOT_AUTO,
"Sauvegarde instantanée chargée depuis l'emplacement : Auto."
)
MSG_HASH(
MSG_LOADING,
"Chargement"
@@ -14458,6 +14490,14 @@ MSG_HASH(
MSG_SAVED_NEW_CONFIG_TO,
"Configuration enregistrée vers"
)
MSG_HASH(
MSG_SAVED_STATE_TO_SLOT,
"Sauvegarde instantanée enregistrée vers l'emplacement : %d."
)
MSG_HASH(
MSG_SAVED_STATE_TO_SLOT_AUTO,
"Sauvegarde instantanée enregistrée vers l'emplacement : Auto."
)
MSG_HASH(
MSG_SAVED_SUCCESSFULLY_TO,
"Enregistré avec succès vers"
+41 -1
View File
@@ -209,6 +209,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_QUIT_RETROARCH,
"Scoir feidhmchlár RetroArch. Tá sábháil chumraíochta ar scor cumasaithe."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_NOW,
"Sioncrónaigh Anois"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_NOW,
"Spreag sioncrónú scamall de láimh."
)
MSG_HASH(
MENU_ENUM_SUBLABEL_QUIT_RETROARCH_NOSAVE,
"Scoir feidhmchlár RetroArch. Tá sábháil chumraíochta ar scor díchumasaithe. Scoir feidhmchlár RetroArch. Tá sábháil chumraíochta ar scor díchumasaithe."
@@ -1320,6 +1328,22 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
"Nuair a bhíonn sé díchumasaithe, bogtar comhaid chuig fillteán cúltaca sula ndéantar iad a athscríobh nó a scriosadh."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE,
"Mód Sioncrónaithe"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_MODE,
"Uathoibríoch: Sioncrónaigh ar thosú RetroArch agus nuair a dhíluchtaítear croíleacáin. Lámhleabhar: Sioncrónaigh ach amháin nuair a chuirtear an cnaipe 'Sioncrónaigh Anois' i ngníomh de láimh."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_AUTOMATIC,
"Uathoibríoch"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_MANUAL,
"Lámhleabhar"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
"Cúltaca Sioncrónaithe Cloud"
@@ -5063,7 +5087,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CORE_SUGGEST_ALWAYS,
"Mol croíthe atá ar fáil fiú nuair atá croí luchtaithe cheana féin."
"Mol croíleacáin atá ar fáil fiú nuair a luchtaítear croí de láimh."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER,
@@ -14370,6 +14394,14 @@ MSG_HASH(
MSG_LIBRETRO_FRONTEND,
"Comhéadan le haghaidh libretro"
)
MSG_HASH(
MSG_LOADED_STATE_FROM_SLOT,
"Stádas luchtaithe ón sliotán: %d."
)
MSG_HASH(
MSG_LOADED_STATE_FROM_SLOT_AUTO,
"Stádas luchtaithe ón sliotán: Uathoibríoch."
)
MSG_HASH(
MSG_LOADING,
"Ag luchtú"
@@ -14566,6 +14598,14 @@ MSG_HASH(
MSG_SAVED_NEW_CONFIG_TO,
"Cumraíocht shábháilte chuig"
)
MSG_HASH(
MSG_SAVED_STATE_TO_SLOT,
"Stádas sábháilte chuig an sliotán: %d."
)
MSG_HASH(
MSG_SAVED_STATE_TO_SLOT_AUTO,
"Stádas sábháilte chuig an sliotán: Uathoibríoch."
)
MSG_HASH(
MSG_SAVED_SUCCESSFULLY_TO,
"Sábháilte go rathúil chuig"
+4 -4
View File
@@ -1320,6 +1320,10 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
"Cando está desactivado, os ficheiros móvense a un cartafol de copia de seguranza antes de sobrescribilos ou eliminalos."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_AUTOMATIC,
"Automático"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
"Infraestrutura (backend) de sincronización na nube"
@@ -5001,10 +5005,6 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_CORE_SUGGEST_ALWAYS,
"Suxerir sempre núcleos"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CORE_SUGGEST_ALWAYS,
"Suxerir núcleos dispoñibles incluso cando xa hai un núcleo cargado."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER,
"Usa o reprodutor multimedia integrado"
+8
View File
@@ -71,6 +71,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_CORE_LIST,
"בחרו באיזו ליבה להשתמש."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CORE_LIST_UNLOAD,
"פריקת ליבה"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CORE_LIST_UNLOAD,
"שחרור הליבה הטעונה."
)
MSG_HASH(
MENU_ENUM_LABEL_HELP_CORE_LIST,
"עיון אחר ליבה עבור הטמעת ליבת libretro. היכן העיון מתחיל תלוי בנתיב הליבה שלך. אם ריק, העיון יתחיל בנתיב הראשי.\nאם נתיב הליבה הוא תיקייה, התפריט ישתמש בה כתיקיית על. אם נתיב ליבה הוא נתיב מלא, העיון יתחיל בתיקייה שבה הקובץ."
+40
View File
@@ -209,6 +209,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_QUIT_RETROARCH,
"Kilépés a RetroArch alkalmazásból. Konfiguráció mentése kilépéskor: engedélyezve."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_NOW,
"Szinkronizálás most"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_NOW,
"A felhőbe szinkronizálás kézi indítása."
)
MSG_HASH(
MENU_ENUM_SUBLABEL_QUIT_RETROARCH_NOSAVE,
"Kilépés a RetroArch alkalmazásból. Konfiguráció mentése kilépéskor: letiltva."
@@ -1304,6 +1312,22 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
"Kikapcsolt állapotban a fájlok egy tartalék könyvtárba kerülnek felülírás vagy törlés előtt."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE,
"Szinkronizálás módja"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_MODE,
"Automatikus: szinkronizálás a RetroArch indításakor és magok leállításakor. Kézi: csak a \"Szinkronizálás most\" gomb megnyomásakor."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_AUTOMATIC,
"Automatikus"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_MANUAL,
"Kézi"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
"A felhőszinkronizálás háttértára"
@@ -14050,6 +14074,14 @@ MSG_HASH(
MSG_LIBRETRO_FRONTEND,
"Libretro frontend"
)
MSG_HASH(
MSG_LOADED_STATE_FROM_SLOT,
"Játékállás betöltve a %d. rekeszből."
)
MSG_HASH(
MSG_LOADED_STATE_FROM_SLOT_AUTO,
"Játékállás betöltve az automata rekeszből."
)
MSG_HASH(
MSG_LOADING,
"Betöltés"
@@ -14246,6 +14278,14 @@ MSG_HASH(
MSG_SAVED_NEW_CONFIG_TO,
"Konfiguráció mentve ide"
)
MSG_HASH(
MSG_SAVED_STATE_TO_SLOT,
"Játékállás elmentve a %d. rekeszbe."
)
MSG_HASH(
MSG_SAVED_STATE_TO_SLOT_AUTO,
"Játékállás elmentve az automata rekeszbe."
)
MSG_HASH(
MSG_SAVED_SUCCESSFULLY_TO,
"Sikeresen mentve ide"
+24 -4
View File
@@ -1288,6 +1288,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
"Quando questa opzione è disabilitata, i file vengono spostati in una cartella di backup prima di essere sovrascritti o cancellati."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_AUTOMATIC,
"Automatico"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_MANUAL,
"Manuale"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
"Backend di sincronizzazione cloud"
@@ -4953,10 +4961,6 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_CORE_SUGGEST_ALWAYS,
"Suggerisci Sempre Nucleo"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CORE_SUGGEST_ALWAYS,
"Suggerisci i nuclei disponibili anche quando un nucleo è già caricato."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER,
"Usa Lettore Multimediale Integrato"
@@ -14086,6 +14090,14 @@ MSG_HASH(
MSG_LIBRETRO_FRONTEND,
"Frontend per libretro"
)
MSG_HASH(
MSG_LOADED_STATE_FROM_SLOT,
"Caricamento del salvataggio dallo slot: #%d."
)
MSG_HASH(
MSG_LOADED_STATE_FROM_SLOT_AUTO,
"Stato caricato dallo slot: Auto."
)
MSG_HASH(
MSG_LOADING,
"Caricamento in corso"
@@ -14282,6 +14294,14 @@ MSG_HASH(
MSG_SAVED_NEW_CONFIG_TO,
"Configurazione salvata in"
)
MSG_HASH(
MSG_SAVED_STATE_TO_SLOT,
"Stato salvato nello slot: %d."
)
MSG_HASH(
MSG_SAVED_STATE_TO_SLOT_AUTO,
"Stato salvato nello slot: Auto."
)
MSG_HASH(
MSG_SAVED_SUCCESSFULLY_TO,
"Salvato con successo su"
+4
View File
@@ -1288,6 +1288,10 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
"無効にすると、ファイルは上書きまたは削除される前にバックアップフォルダに移動されます。"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_MANUAL,
"手動"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
"クラウド同期のバックエンド"
+40 -4
View File
@@ -217,6 +217,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_QUIT_RETROARCH,
"RetroArch 응용 프로그램을 종료합니다. 종료 시 구성 저장이 활성화되어 있습니다."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_NOW,
"지금 동기화"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_NOW,
"수동으로 클라우드 동기화를 수행합니다."
)
MSG_HASH(
MENU_ENUM_SUBLABEL_QUIT_RETROARCH_NOSAVE,
"RetroArch 응용 프로그램을 종료합니다. 종료 시 구성 저장이 비활성화되어 있습니다."
@@ -1332,6 +1340,22 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
"비활성화할 경우, 동기화 대상 파일들을 덮어씌우거나 삭제하지 않고 백업 폴더에 저장합니다."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE,
"동기화 모드"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_MODE,
"자동: RetroArch가 실행될 때와 코어가 종료될 때 동기화합니다. 수동: '지금 동기화' 버튼을 직접 누를 때에만 동기화합니다."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_AUTOMATIC,
"자동"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_MANUAL,
"수동"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
"클라우드 동기화 백엔드"
@@ -5093,10 +5117,6 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_CORE_SUGGEST_ALWAYS,
"항상 코어 제안하기"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CORE_SUGGEST_ALWAYS,
"코어가 이미 불러와져 있더라도 항상 사용 가능한 코어 목록을 표시합니다."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER,
"내장 미디어 플레이어 사용"
@@ -14402,6 +14422,14 @@ MSG_HASH(
MSG_LIBRETRO_FRONTEND,
"libretro 프론트엔드"
)
MSG_HASH(
MSG_LOADED_STATE_FROM_SLOT,
"%d번 슬롯에서 상태 불러옴."
)
MSG_HASH(
MSG_LOADED_STATE_FROM_SLOT_AUTO,
"자동 슬롯에서 상태 불러옴."
)
MSG_HASH(
MSG_LOADING,
"불러오는 중"
@@ -14598,6 +14626,14 @@ MSG_HASH(
MSG_SAVED_NEW_CONFIG_TO,
"구성을 다음 위치에 저장함:"
)
MSG_HASH(
MSG_SAVED_STATE_TO_SLOT,
"%d번 슬롯에 상태 저장함."
)
MSG_HASH(
MSG_SAVED_STATE_TO_SLOT_AUTO,
"자동 슬롯에 상태 저장함."
)
MSG_HASH(
MSG_SAVED_SUCCESSFULLY_TO,
"저장 성공:"
+16
View File
@@ -3018,6 +3018,10 @@ MSG_HASH(
MENU_ENUM_LABEL_QUIT_RETROARCH,
"quit_retroarch"
)
MSG_HASH(
MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_NOW,
"cloud_sync_sync_now"
)
MSG_HASH(
MENU_ENUM_LABEL_RDB_ENTRY,
"rdb_entry"
@@ -3686,6 +3690,18 @@ MSG_HASH(
MENU_ENUM_LABEL_CLOUD_SYNC_ENABLE,
"cloud_sync_enable"
)
MSG_HASH(
MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_MODE,
"cloud_sync_sync_mode"
)
MSG_HASH(
MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_MODE_AUTOMATIC,
"cloud_sync_sync_mode_automatic"
)
MSG_HASH(
MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_MODE_MANUAL,
"cloud_sync_sync_mode_manual"
)
MSG_HASH(
MENU_ENUM_LABEL_CLOUD_SYNC_DESTRUCTIVE,
"cloud_sync_destructive"
+4
View File
@@ -1156,6 +1156,10 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
"Når deaktivert, flyttes filer til en sikkerhetskopimappe før de overskrives eller slettes."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_MANUAL,
"Manuell"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_URL,
"URL for sky-lagring"
+24 -4
View File
@@ -1304,6 +1304,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
"Gdy wyłączone, pliki są przenoszone do folderu kopii zapasowej przed nadpisaniem lub usunięciem."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_AUTOMATIC,
"Automatyczne"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_MANUAL,
"Ręczny"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
"Back-end synchronizacji w chmurze"
@@ -4321,10 +4329,6 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_CORE_SUGGEST_ALWAYS,
"Zawsze proponuj rdzenie"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CORE_SUGGEST_ALWAYS,
"Zaproponuj dostępne rdzenie nawet wtedy, gdy rdzeń jest już załadowany."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER,
"Użyj wbudowanego odtwarzacza multimedialnego"
@@ -12410,6 +12414,14 @@ MSG_HASH(
MSG_LIBRETRO_FRONTEND,
"Frontend dla libretro"
)
MSG_HASH(
MSG_LOADED_STATE_FROM_SLOT,
"Wczytano stan ze slotu: %d."
)
MSG_HASH(
MSG_LOADED_STATE_FROM_SLOT_AUTO,
"Załadowany stan ze slotu: Auto."
)
MSG_HASH(
MSG_LOADING,
"Ładuję"
@@ -12574,6 +12586,14 @@ MSG_HASH(
MSG_REWIND_REACHED_END,
"Osiągnięto koniec bufora przewijania."
)
MSG_HASH(
MSG_SAVED_STATE_TO_SLOT,
"Zapisano stan w slocie: %d."
)
MSG_HASH(
MSG_SAVED_STATE_TO_SLOT_AUTO,
"Zapisano stan w slocie: Auto."
)
MSG_HASH(
MSG_SAVED_SUCCESSFULLY_TO,
"Zapisano pomyślnie do"
+20 -4
View File
@@ -209,6 +209,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_QUIT_RETROARCH,
"Fecha o RetroArch.\n\"Salvar configuração ao sair\" está ativado."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_NOW,
"Sincronizar Agora"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_NOW,
"Acionar manualmente a sincronização com a nuvem."
)
MSG_HASH(
MENU_ENUM_SUBLABEL_QUIT_RETROARCH_NOSAVE,
"Fecha o RetroArch.\n\"Salvar configuração ao sair\" está desativado."
@@ -1308,6 +1316,18 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
"Quando desativado, os arquivos são movidos para uma pasta de backup antes de serem substituídos ou excluídos."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE,
"Modo de Sincronização"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_MODE,
"Automático: Sincroniza na inicialização do RetroArch e quando os núcleos são descarregados. Manual: Só sincroniza quando o botão 'Sincronizar Agora' for acionado manualmente."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_AUTOMATIC,
"Automático"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
"Sincronização da nuvem Backend"
@@ -5025,10 +5045,6 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_CORE_SUGGEST_ALWAYS,
"Sempre Sugerir Núcleos"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CORE_SUGGEST_ALWAYS,
"Sugerir núcleos disponíveis mesmo quando um núcleo já estiver carregado."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER,
"Utilizar o reprodutor de mídia integrado"
+37 -1
View File
@@ -217,6 +217,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_QUIT_RETROARCH,
"Закрыть RetroArch. Сохранение конфигурации при выходе включено."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_NOW,
"Синхронизировать сейчас"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_NOW,
"Ручной запуск облачной синхронизации."
)
MSG_HASH(
MENU_ENUM_SUBLABEL_QUIT_RETROARCH_NOSAVE,
"Закрыть RetroArch. Сохранение конфигурации при выходе отключено."
@@ -1328,6 +1336,18 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
"При отключении опции файлы перед удалением или перезаписью будут помещены в папку резервного копирования."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE,
"Режим синхронизации"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_MODE,
"Автоматический: синхронизировать при запуске RetroArch и когда нет загруженных ядер. Ручной: синхронизировать только вручную нажатием кнопки 'Синхронизировать сейчас'."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_MANUAL,
"Вручную"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
"Бэкенд облачной синхронизации"
@@ -5083,7 +5103,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CORE_SUGGEST_ALWAYS,
"Предлагать доступные ядра даже если ядро уже загружено."
"Предлагать доступные ядра даже при ручной загрузке ядра."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER,
@@ -14338,6 +14358,14 @@ MSG_HASH(
MSG_LIBRETRO_FRONTEND,
"Фронтенд для libretro"
)
MSG_HASH(
MSG_LOADED_STATE_FROM_SLOT,
"Загружено сохранение в слоте %d."
)
MSG_HASH(
MSG_LOADED_STATE_FROM_SLOT_AUTO,
"Загружено сохранение в автослоте."
)
MSG_HASH(
MSG_LOADING,
"Загружается"
@@ -14534,6 +14562,14 @@ MSG_HASH(
MSG_SAVED_NEW_CONFIG_TO,
"Конфигурация сохранена в"
)
MSG_HASH(
MSG_SAVED_STATE_TO_SLOT,
"Создано сохранение в слоте %d."
)
MSG_HASH(
MSG_SAVED_STATE_TO_SLOT_AUTO,
"Создано сохранение в автослоте."
)
MSG_HASH(
MSG_SAVED_SUCCESSFULLY_TO,
"Успешно сохранено в"
+8
View File
@@ -1140,6 +1140,14 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_ENABLE,
"Povoliť cloud synchronizáciu"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_AUTOMATIC,
"Automaticky"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_MANUAL,
"Ručne"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_USERNAME,
"Meno používateľa"
+78 -34
View File
@@ -123,7 +123,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_SUBLABEL_PLAYLISTS_TAB,
"Visar spellistor med skannat innehåll som matchar databasen."
"Visar spellistor med genomsökt innehåll som matchar databasen."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_ADD_CONTENT_LIST,
@@ -131,7 +131,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_CONTENT_LIST,
"Skapa eller uppdatera spellistor genom att skanna Innehåll."
"Skapa eller uppdatera spellistor genom att söka igenom innehåll."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_SHOW_WIMP,
@@ -205,6 +205,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_QUIT_RETROARCH,
"Avsluta RetroArch-programmet. Konfiguration sparas vid avslut är aktiverat."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_NOW,
"Synkronisera nu"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_NOW,
"Starta molnsynkronisering manuellt."
)
MSG_HASH(
MENU_ENUM_SUBLABEL_QUIT_RETROARCH_NOSAVE,
"Avsluta RetroArch-programmet. Konfiguration sparas vid avslut är inaktiverat."
@@ -1218,7 +1226,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_SAVING_SETTINGS,
"Sparar"
"Sparningar"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_SAVING_SETTINGS,
@@ -1280,6 +1288,22 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
"Inaktiverat flyttas filer till en säkerhetskopia innan de skrivs över eller raderas."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE,
"Synkroniseringsläge"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_MODE,
"Automatiskt: Synkronisering vid uppstart av RetroArch och när kärnor läses ur. Manuellt: Synkronisering endast när knappen ”Synkronisera nu” trycks in manuellt."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_AUTOMATIC,
"Automatiskt"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_MANUAL,
"Manuellt"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
"Backend för molnsynk"
@@ -2637,7 +2661,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_VRR_RUNLOOP_ENABLE,
"Synkronisera exakt till innehålls bildhastighet (G-syn, FreeSync)"
"Synkronisera exakt till innehållets bildhastighet (G-Sync, FreeSync)"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_VRR_RUNLOOP_ENABLE,
@@ -2770,7 +2794,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_AUDIO_DSP_PLUGIN,
"DSP-plugin"
"DSP-insticksmodul"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_AUDIO_DSP_PLUGIN,
@@ -2782,7 +2806,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_SUBLABEL_AUDIO_DSP_PLUGIN_REMOVE,
"Inaktiverar DSP-plugins som är aktiva."
"Inaktiverar DSP-insticksmoduler som är aktiva."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_AUDIO_WASAPI_EXCLUSIVE_MODE,
@@ -3203,11 +3227,11 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_INPUT_AUTO_GAME_FOCUS,
"Automatiskt 'Game Focus'-läge"
"Automatiskt 'Spelfokus'-läge"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_INPUT_AUTO_GAME_FOCUS,
"Aktivera alltid 'Game Focus' -läget när innehåll startar eller återupptas. När inställt på \"Detektera\" kommer alternativet att aktiveras om kärnan implementerar frontens-tangentbordsåteruppringningsfunktioner."
"Aktivera alltid 'Spelfokus' -läget när innehåll startar eller återupptas. När inställt på \"Identifiera\" kommer alternativet att aktiveras om kärnan implementerar frontendens funktioner för tangentbordsåteranrop."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_INPUT_AUTO_GAME_FOCUS_OFF,
@@ -3219,7 +3243,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_INPUT_AUTO_GAME_FOCUS_DETECT,
"Detektera"
"Identifiera"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_PAUSE_ON_DISCONNECT,
@@ -3976,7 +4000,7 @@ MSG_HASH(
MSG_HASH(
MENU_ENUM_LABEL_VALUE_INPUT_META_VRR_RUNLOOP_TOGGLE,
"Synkronisera till exakt innehållsbildhastighet (På/Av)"
"Synkronisera till exakt bildhastighet för innehållet (På/Av)"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_INPUT_META_VRR_RUNLOOP_TOGGLE,
@@ -4792,7 +4816,7 @@ MSG_HASH(
MSG_HASH(
MENU_ENUM_LABEL_VALUE_LOG_VERBOSITY,
"Verbositet för loggning"
"Utförlighetsnivå för loggning"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_LOG_VERBOSITY,
@@ -4895,7 +4919,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CORE_SUGGEST_ALWAYS,
"Föreslå tillgängliga kärnor även när en kärna redan har lästs in."
"Föreslå tillgängliga kärnor även när en kärna lästs in manuellt."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER,
@@ -4914,7 +4938,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_SUBLABEL_INPUT_META_REWIND,
"Ändra inställningar för Spola tillbaka."
"Ändra inställningar för Tillbakaspolning."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_FRAME_TIME_COUNTER_SETTINGS,
@@ -4981,7 +5005,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_REWIND_BUFFER_SIZE,
"Spola tillbaka Buffertstorlek (MB)"
"Buffertstorlek för tillbakaspolning (MB)"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_REWIND_BUFFER_SIZE,
@@ -6556,11 +6580,11 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_REWIND,
"Visa 'Spola tillbaka'"
"Visa 'Tillbakaspolning'"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CONTENT_SHOW_REWIND,
"Visa alternativet 'Spola tillbaka'."
"Visa alternativet 'Tillbakaspolning'."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_SAVE_CORE_OVERRIDES,
@@ -6711,11 +6735,11 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_SETTINGS_SHOW_SAVING,
"Visa 'Sparar'"
"Visa 'Sparningar'"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_SETTINGS_SHOW_SAVING,
"Visa inställningar för 'Sparar'."
"Visa inställningar för 'Sparningar'."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_SETTINGS_SHOW_LOGGING,
@@ -8417,23 +8441,23 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_SCAN_FILE,
"Skanna fil"
"Sök igenom fil"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_SCAN_FILE,
"Skannar en fil efter innehåll som matchar databasen."
"Söker igenom en fil efter innehåll som matchar databasen."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MANUAL_CONTENT_SCAN_LIST,
"Manuell skanning"
"Manuell genomsökning"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_MANUAL_CONTENT_SCAN_LIST,
"Konfigurerbar skanning baserad på filnamnet på innehåll. Kräver inte att innehåll matchar databasen."
"Konfigurerbar genomsökning baserad på filnamnet på innehåll. Kräver inte att innehåll matchar databasen."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_SCAN_ENTRY,
"Skanna"
"Sök igenom"
)
/* Import Content > Scan File */
@@ -8499,7 +8523,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MANUAL_CONTENT_SCAN_SEARCH_ARCHIVES,
"Skanna inuti Arkiv"
"Sök igenom inuti arkiv"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_MANUAL_CONTENT_SCAN_SEARCH_ARCHIVES,
@@ -8535,7 +8559,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MANUAL_CONTENT_SCAN_START,
"Starta skanning"
"Starta genomsökning"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_MANUAL_CONTENT_SCAN_START,
@@ -12456,6 +12480,10 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_CONTENT_HISTORY_PATH,
"Sökväg för innehållshistorik"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CRT_SWITCH_RESOLUTION_OUTPUT_DISPLAY_ID,
"Skärm-id för utgång"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CRT_SWITCH_RESOLUTION_OUTPUT_DISPLAY_ID,
"Välj utgångsporten som är ansluten till CRT-skärmen."
@@ -13694,6 +13722,14 @@ MSG_HASH(
MSG_LIBRETRO_FRONTEND,
"Frontend för libretro"
)
MSG_HASH(
MSG_LOADED_STATE_FROM_SLOT,
"Läste in tillstånd från plats: %d."
)
MSG_HASH(
MSG_LOADED_STATE_FROM_SLOT_AUTO,
"Läste in tillstånd från plats: Auto."
)
MSG_HASH(
MSG_LOADING,
"Läser in"
@@ -13878,6 +13914,14 @@ MSG_HASH(
MSG_SAVED_NEW_CONFIG_TO,
"Sparade konfiguration till"
)
MSG_HASH(
MSG_SAVED_STATE_TO_SLOT,
"Sparade tillstånd till plats: %d."
)
MSG_HASH(
MSG_SAVED_STATE_TO_SLOT_AUTO,
"Sparade tillstånd till plats: Auto."
)
MSG_HASH(
MSG_SAVED_SUCCESSFULLY_TO,
"Sparades till"
@@ -13892,7 +13936,7 @@ MSG_HASH(
)
MSG_HASH(
MSG_SCANNING,
"Skannar"
"Söker igenom"
)
MSG_HASH(
MSG_SCANNING_OF_DIRECTORY_FINISHED,
@@ -14124,7 +14168,7 @@ MSG_HASH(
)
MSG_HASH(
MSG_BLUETOOTH_SCAN_COMPLETE,
"Bluetooth-skanning slutförd."
"Bluetooth-genomsökning slutförd."
)
MSG_HASH(
MSG_BLUETOOTH_PAIRING_REMOVED,
@@ -14132,15 +14176,15 @@ MSG_HASH(
)
MSG_HASH(
MSG_WIFI_SCAN_COMPLETE,
"Wi-Fi-skanning slutförd."
"Wi-Fi-genomsökning slutförd."
)
MSG_HASH(
MSG_SCANNING_BLUETOOTH_DEVICES,
"Skannar efter bluetooth-enheter..."
"Söker efter bluetooth-enheter..."
)
MSG_HASH(
MSG_SCANNING_WIRELESS_NETWORKS,
"Skannar trådlösa nätverk..."
"Söker efter trådlösa nätverk..."
)
MSG_HASH(
MSG_ENABLING_WIRELESS,
@@ -14560,7 +14604,7 @@ MSG_HASH(
)
MSG_HASH(
MSG_MANUAL_CONTENT_SCAN_START,
"Skannar innehåll: "
"Söker igenom innehåll: "
)
MSG_HASH(
MSG_MANUAL_CONTENT_SCAN_PLAYLIST_CLEANUP,
@@ -14568,7 +14612,7 @@ MSG_HASH(
)
MSG_HASH(
MSG_MANUAL_CONTENT_SCAN_IN_PROGRESS,
"Skannar: "
"Söker igenom: "
)
MSG_HASH(
MSG_MANUAL_CONTENT_SCAN_M3U_CLEANUP,
@@ -14814,11 +14858,11 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_SUBLABEL_BLUETOOTH_SETTINGS,
"Skanna efter bluetooth-enheter och anslut dem."
"Sök efter bluetooth-enheter och anslut dem."
)
MSG_HASH(
MENU_ENUM_SUBLABEL_WIFI_SETTINGS,
"Skanna efter trådlösa nätverk och etablera anslutning."
"Sök efter trådlösa nätverk och etablera anslutning."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_WIFI_ENABLED,
+8 -4
View File
@@ -1316,6 +1316,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
"Devre dışı bırakıldığında, dosyalar üzerine yazılmadan veya silinmeden önce yedek klasörüne taşınır."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_AUTOMATIC,
"Otomatik"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_MANUAL,
"El İle"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
"Bulut Eşitleyici Arka Uç"
@@ -5053,10 +5061,6 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_CORE_SUGGEST_ALWAYS,
"Her Zaman Çekirdekleri Öner"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CORE_SUGGEST_ALWAYS,
"Bir çekirdek zaten yüklü olsa bile kullanılabilir çekirdekleri öner."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER,
"Dahili Medya Oynatıcı Kullan"
+209 -1
View File
@@ -217,6 +217,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_QUIT_RETROARCH,
"Вихід з додатка RetroArch. Збереження конфігурації на виході увімкнено."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_NOW,
"Синхронізувати зараз"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_NOW,
"Синхронізація хмар вручну тригера."
)
MSG_HASH(
MENU_ENUM_SUBLABEL_QUIT_RETROARCH_NOSAVE,
"Вихід з додатка RetroArch. Збереження конфігурації на виході вимкнено."
@@ -1328,6 +1336,22 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
"У вимкненому стані, файли переміщуються до резервного каталогу перед перезаписом чи видаленням."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE,
"Режим синхронізації"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_MODE,
"Автоматична: Синхронізація при запуску RetroArch та при відключенні ядра. Вручну: синхронізувати, коли кнопка 'Sync зараз' буде викликана вручну."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_AUTOMATIC,
"Автоматично"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_MANUAL,
"Ручний"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
"Бекенд хмарної синхронізації"
@@ -2497,6 +2521,10 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_VIDEO_SCALE_INTEGER_SCALING,
"Цілочисельне масштабування"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_VIDEO_SCALE_INTEGER_SCALING,
"Округліть до меншого або більшого числа. «Розумне» масштабування зменшується до меншого, якщо зображення занадто обрізане, і, нарешті, повертається до нецілочисельного масштабування, якщо поля меншого масштабу занадто великі."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_VIDEO_SCALE_INTEGER_SCALING_UNDERSCALE,
"Занижена шкала"
@@ -3316,6 +3344,10 @@ MSG_HASH(
)
#endif
#ifdef ANDROID
MSG_HASH(
MENU_ENUM_LABEL_VALUE_INPUT_SELECT_PHYSICAL_KEYBOARD,
"Виберіть фізичну клавіатуру"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_INPUT_SELECT_PHYSICAL_KEYBOARD,
"Використовувати цей пристрій як фізичну клавіатуру і не як геймпад."
@@ -3389,10 +3421,26 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_SENSITIVITY,
"Аналогова Чутливість"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_INPUT_SENSOR_ACCELEROMETER_SENSITIVITY,
"Чутливість акселерометра"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_INPUT_SENSOR_GYROSCOPE_SENSITIVITY,
"Чутливість гіроскопа"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_INPUT_ANALOG_SENSITIVITY,
"Налаштувати чутливість аналогових джойстиків."
)
MSG_HASH(
MENU_ENUM_SUBLABEL_INPUT_SENSOR_ACCELEROMETER_SENSITIVITY,
"Налаштуйте чутливість акселерометра."
)
MSG_HASH(
MENU_ENUM_SUBLABEL_INPUT_SENSOR_GYROSCOPE_SENSITIVITY,
"Налаштуйте чутливість гіроскопа."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_INPUT_BIND_TIMEOUT,
"Затримка привʼязки"
@@ -3636,6 +3684,22 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_INPUT_ALL_USERS_CONTROL_MENU,
"Дозволяє будь-якому користувачу контролювати меню. Якщо вимкнено, тоді лише користувач 1 може керувати меню."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MENU_SINGLECLICK_PLAYLISTS,
"Списки відтворення одним кліком"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_MENU_SINGLECLICK_PLAYLISTS,
"Пропустити меню «Виконати» під час запуску записів списку відтворення. Натисніть D-Pad, утримуючи OK, щоб отримати доступ до меню «Виконати»."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MENU_ALLOW_TABS_BACK,
"Дозволити повернення з вкладок"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_MENU_ALLOW_TABS_BACK,
"Повернення до головного меню з вкладок/бічної панелі після натискання кнопки «Назад»."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MENU_SCROLL_FAST,
"Прискорення прокрутки меню"
@@ -3715,6 +3779,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_INPUT_HOTKEY_DEVICE_MERGE,
"Блокувати всі гарячі клавіші як на клавіатурі, так і на пристрої контролера, якщо для будь-якого типу встановлено параметр «Увімкнути гарячі клавіші»."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_INPUT_HOTKEY_FOLLOWS_PLAYER1,
"Гарячі клавіші слідують за гравцем 1"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_INPUT_HOTKEY_FOLLOWS_PLAYER1,
"Гарячі клавіші прив’язані до основного порту 1, навіть якщо основний порт 1 перепризначено іншому користувачеві. Примітка: гарячі клавіші клавіатури не працюватимуть, якщо основний порт 1 перепризначено будь-якому користувачеві > 1 (введення з клавіатури здійснюється кори[...]"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_INPUT_MENU_ENUM_TOGGLE_GAMEPAD_COMBO,
"Перемикач меню (комбінований контролер)"
@@ -4009,6 +4081,30 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_INPUT_META_HALT_REPLAY_KEY,
"Зупинка запису/відтворення поточного повтору."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_INPUT_META_SAVE_REPLAY_CHECKPOINT_KEY,
"Контрольна точка збереження повтору"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_INPUT_META_SAVE_REPLAY_CHECKPOINT_KEY,
"Встановлює контрольну точку для поточного відтворення повтору."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_INPUT_META_PREV_REPLAY_CHECKPOINT_KEY,
"Контрольна точка попереднього повтору"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_INPUT_META_PREV_REPLAY_CHECKPOINT_KEY,
"Перемотує повтор до попередньої автоматично або вручну збереженої контрольної точки."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_INPUT_META_NEXT_REPLAY_CHECKPOINT_KEY,
"Наступна контрольна точка повтору"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_INPUT_META_NEXT_REPLAY_CHECKPOINT_KEY,
"Перемотує повтор до наступної автоматично або вручну збереженої контрольної точки."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_INPUT_META_REPLAY_SLOT_PLUS,
"Наступний слот для повтору"
@@ -4743,6 +4839,18 @@ MSG_HASH(
MENU_ENUM_LABEL_HELP_REPLAY_CHECKPOINT_INTERVAL,
"Автоматично зберігає стан гри під час запису повтору з регулярним інтервалом. За замовчуванням вимкнено, якщо не встановлено інше. Інтервал вимірюється у секундах. Значення 0 вимикає запис контрольних точок."
)
MSG_HASH(
MENU_ENUM_SUBLABEL_REPLAY_CHECKPOINT_DESERIALIZE,
"Чи слід десеріалізувати контрольні точки, що зберігаються у повторах, під час звичайного відтворення."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_REPLAY_CHECKPOINT_DESERIALIZE,
"Десеріалізація контрольної точки повтору"
)
MSG_HASH(
MENU_ENUM_LABEL_HELP_REPLAY_CHECKPOINT_DESERIALIZE,
"Чи десеріалізувати контрольні точки, що зберігаються у повторах, під час звичайного відтворення. Слід встановити значення «true» для більшості ядер, але деякі можуть демонструвати нестабільну поведінку під час десеріалізації контенту."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_SAVESTATE_AUTO_INDEX,
"Автоматично збільшувати збереження стану"
@@ -4979,7 +5087,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CORE_SUGGEST_ALWAYS,
"Пропозиція доступних ядер навіть тоді, коли ядро вже завантажено."
"Запропонувати доступні ядра навіть якщо ядро завантажується вручну."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER,
@@ -7053,6 +7161,10 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_MENU_STARTUP_PAGE,
"Стартова Сторінка"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_MENU_STARTUP_PAGE,
"Початкова сторінка меню під час запуску."
)
/* Settings > AI Service */
@@ -7767,6 +7879,10 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_PLAYLIST_SUBLABEL_LAST_PLAYED,
"Востаннє зіграно:"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_PLAYLIST_SUBLABEL_PLAY_COUNT,
"Кількість відтворень:"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_TIME_UNIT_SECONDS_SINGLE,
"секунда"
@@ -9809,6 +9925,22 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_APPEND,
"Додати пресет до поточно завантаженого пресету."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_MANAGER,
"Керування шаблонами"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_MANAGER,
"Збереження або вилучення шаблон шейдерів."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_FILE_INFO,
"Активний файл шаблонів"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_FILE_INFO,
"Поточний шаблон шейдера, що використовується."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_SHADER_APPLY_CHANGES,
"Застосувати зміни"
@@ -9874,6 +10006,18 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_SAVE_REFERENCE,
"Зберегти пресет шейдера, який має посилання на оригінальний пресет і включає в себе тільки той параметр, який ви зробили."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_SAVE_CURRENT,
"Зберегти поточний шаблон"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_SAVE_CURRENT,
"Зберегти поточний шаблон шейдера."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_SAVE_AS,
"Зберегти шаблон як"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_SAVE_AS,
"Зберегти поточні налаштування шейдера як новий пресет."
@@ -13417,6 +13561,14 @@ MSG_HASH(
MSG_NETPLAY_S_HAS_JOINED_WITH_INPUT_DEVICES_S,
"%.*s приєднався з пристроєм введення %.*s"
)
MSG_HASH(
MSG_NETPLAY_PLAYERS_INFO,
"%d гравець(і)"
)
MSG_HASH(
MSG_NETPLAY_SPECTATORS_INFO,
"%d гравець(і) (%d глядачів)"
)
MSG_HASH(
MSG_NETPLAY_NOT_RETROARCH,
"Спроба з'єднання з мережею не вдалася, оскільки учасник не запущений RetroArch, або запущена стара версія Retroch."
@@ -13970,10 +14122,22 @@ MSG_HASH(
MSG_FAILED_TO_GET_NICKNAME_FROM_CLIENT,
"Не вдалося отримати псевдонім від клієнта."
)
MSG_HASH(
MSG_FAILED_TO_LOAD,
"Не вдалося завантажити."
)
MSG_HASH(
MSG_FAILED_TO_LOAD_CONTENT,
"Не вдалося завантажити вміст."
)
MSG_HASH(
MSG_FAILED_TO_LOAD_FROM_PLAYLIST,
"Не вдалося завантажити зі списку відтворення."
)
MSG_HASH(
MSG_FAILED_TO_LOAD_MOVIE_FILE,
"Не вдалося завантажити файл фільму."
)
MSG_HASH(
MSG_FAILED_TO_LOAD_OVERLAY,
"Не вдалося завантажити накладку."
@@ -14130,6 +14294,30 @@ MSG_HASH(
MSG_REPLAY_LOAD_STATE_OVERWRITING_REPLAY,
"Неправильна часова шкала; запис буде перезаписано"
)
MSG_HASH(
MSG_REPLAY_SEEK_TO_PREV_CHECKPOINT,
"Перемотати назад"
)
MSG_HASH(
MSG_REPLAY_SEEK_TO_PREV_CHECKPOINT_FAILED,
"Не вдалося перемотати назад"
)
MSG_HASH(
MSG_REPLAY_SEEK_TO_NEXT_CHECKPOINT,
"Перемотування вперед"
)
MSG_HASH(
MSG_REPLAY_SEEK_TO_NEXT_CHECKPOINT_FAILED,
"Не вдалося перемотати вперед"
)
MSG_HASH(
MSG_REPLAY_SEEK_TO_FRAME,
"Пошук завершено"
)
MSG_HASH(
MSG_REPLAY_SEEK_TO_FRAME_FAILED,
"Пошук не вдався"
)
MSG_HASH(
MSG_FOUND_SHADER,
"Знайдено шейдер"
@@ -14230,6 +14418,14 @@ MSG_HASH(
MSG_LIBRETRO_FRONTEND,
"Інтерфейс для лібретро"
)
MSG_HASH(
MSG_LOADED_STATE_FROM_SLOT,
"Завантажений стан зі слота: %d."
)
MSG_HASH(
MSG_LOADED_STATE_FROM_SLOT_AUTO,
"Стан завантаження зі слота: Авто."
)
MSG_HASH(
MSG_LOADING,
"Завантаження"
@@ -14426,6 +14622,14 @@ MSG_HASH(
MSG_SAVED_NEW_CONFIG_TO,
"Конфігурацію збережено у"
)
MSG_HASH(
MSG_SAVED_STATE_TO_SLOT,
"Збережено стан у слоті: %d."
)
MSG_HASH(
MSG_SAVED_STATE_TO_SLOT_AUTO,
"Збережений стан у слоті: Авто."
)
MSG_HASH(
MSG_SAVED_SUCCESSFULLY_TO,
"Успішно збережено до"
@@ -15034,6 +15238,10 @@ MSG_HASH(
MSG_CHEEVOS_CHANGE_MEDIA_FAILED,
"Не вдалося змінити ретроДосягнення: %s"
)
MSG_HASH(
MSG_CHEEVOS_LOGIN_TOKEN_EXPIRED,
"Термін дії входу в RetroAchievements минув. Будь ласка, введіть свій пароль ще раз і перезавантажте гру."
)
MSG_HASH(
MSG_RESAMPLER_QUALITY_LOWEST,
"Найнижча"
+25 -1
View File
@@ -217,6 +217,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_QUIT_RETROARCH,
"Quit RetroArch application. Configuration save on exit is enabled."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_NOW,
"Sync Now"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_NOW,
"Manually trigger cloud synchronization."
)
MSG_HASH(
MENU_ENUM_SUBLABEL_QUIT_RETROARCH_NOSAVE,
"Quit RetroArch application. Configuration save on exit is disabled."
@@ -1344,6 +1352,22 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
"When disabled, files are moved to a backup folder before being overwritten or deleted."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE,
"Sync Mode"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_MODE,
"Automatic: Sync on RetroArch startup and when cores are unloaded. Manual: Only sync when 'Sync Now' button is manually triggered."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_AUTOMATIC,
"Automatic"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_MANUAL,
"Manual"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
"Cloud Sync Backend"
@@ -5127,7 +5151,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CORE_SUGGEST_ALWAYS,
"Suggest available cores even when a core is already loaded."
"Suggest available cores even when a core is manually loaded."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER,
+4
View File
@@ -1120,6 +1120,10 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_SAVING_SETTINGS,
"Canvia els ajustos de guardat."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_MANUAL,
"Selecció manual"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_LOGGING_SETTINGS,
"Registres"
+40 -4
View File
@@ -217,6 +217,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_QUIT_RETROARCH,
"Thoát RetroArch. Lưu thiết lập khi thoát được bật."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_NOW,
"Đồng bộ ngay"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_NOW,
"Kích hoạt đồng bộ hóa đám mây thủ công."
)
MSG_HASH(
MENU_ENUM_SUBLABEL_QUIT_RETROARCH_NOSAVE,
"Thoát RetroArch. Lưu thiết lập khi thoát bị tắt."
@@ -1324,6 +1332,22 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
"Khi tắt, các tệp sẽ được chuyển vào thư mục sao lưu trước khi bị ghi đè hoặc xoá."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE,
"Chế độ đồng bộ"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_MODE,
"Tự động: Đồng bộ khi khởi động RetroArch và khi các core được tắt. Thủ công: Chỉ đồng bộ khi nút Đồng bộ ngay được nhấn."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_AUTOMATIC,
"Tự động"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_MANUAL,
"Thủ công"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
"Nền tảng đồng bộ đám mây."
@@ -5077,10 +5101,6 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_CORE_SUGGEST_ALWAYS,
"Luôn Gợi ý Core"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CORE_SUGGEST_ALWAYS,
"Gợi ý các core có sẵn ngay cả khi đã có một core được tải."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER,
"Sử dụng Trình phát Media tích hợp sẵn"
@@ -14362,6 +14382,14 @@ MSG_HASH(
MSG_LIBRETRO_FRONTEND,
"Giao diện người dùng cho libretro"
)
MSG_HASH(
MSG_LOADED_STATE_FROM_SLOT,
"Đã tải trạng thái từ khe: %d."
)
MSG_HASH(
MSG_LOADED_STATE_FROM_SLOT_AUTO,
"Đã tải trạng thái từ khe: Tự động."
)
MSG_HASH(
MSG_LOADING,
"Đang tải"
@@ -14558,6 +14586,14 @@ MSG_HASH(
MSG_SAVED_NEW_CONFIG_TO,
"Đã lưu cấu hình vào"
)
MSG_HASH(
MSG_SAVED_STATE_TO_SLOT,
"Đã lưu trạng thái vào khe: %d."
)
MSG_HASH(
MSG_SAVED_STATE_TO_SLOT_AUTO,
"Đã lưu trạng thái vào khe: Tự động."
)
MSG_HASH(
MSG_SAVED_SUCCESSFULLY_TO,
"Đã lưu thành công vào"
+10 -10
View File
@@ -15,7 +15,7 @@
#define LANGUAGE_PROGRESS_BULGARIAN_APPROVED 0
/* Catalan */
#define LANGUAGE_PROGRESS_CATALAN_TRANSLATED 99
#define LANGUAGE_PROGRESS_CATALAN_TRANSLATED 100
#define LANGUAGE_PROGRESS_CATALAN_APPROVED 0
/* Czech */
@@ -47,8 +47,8 @@
#define LANGUAGE_PROGRESS_ESPERANTO_APPROVED 0
/* Spanish */
#define LANGUAGE_PROGRESS_SPANISH_TRANSLATED 99
#define LANGUAGE_PROGRESS_SPANISH_APPROVED 95
#define LANGUAGE_PROGRESS_SPANISH_TRANSLATED 100
#define LANGUAGE_PROGRESS_SPANISH_APPROVED 94
/* Persian */
#define LANGUAGE_PROGRESS_PERSIAN_TRANSLATED 11
@@ -59,11 +59,11 @@
#define LANGUAGE_PROGRESS_FINNISH_APPROVED 43
/* French */
#define LANGUAGE_PROGRESS_FRENCH_TRANSLATED 99
#define LANGUAGE_PROGRESS_FRENCH_APPROVED 99
#define LANGUAGE_PROGRESS_FRENCH_TRANSLATED 100
#define LANGUAGE_PROGRESS_FRENCH_APPROVED 100
/* Irish */
#define LANGUAGE_PROGRESS_IRISH_TRANSLATED 99
#define LANGUAGE_PROGRESS_IRISH_TRANSLATED 100
#define LANGUAGE_PROGRESS_IRISH_APPROVED 0
/* Galician */
@@ -79,7 +79,7 @@
#define LANGUAGE_PROGRESS_CROATIAN_APPROVED 0
/* Hungarian */
#define LANGUAGE_PROGRESS_HUNGARIAN_TRANSLATED 99
#define LANGUAGE_PROGRESS_HUNGARIAN_TRANSLATED 100
#define LANGUAGE_PROGRESS_HUNGARIAN_APPROVED 0
/* Indonesian */
@@ -123,7 +123,7 @@
#define LANGUAGE_PROGRESS_PORTUGUESE_APPROVED 0
/* Russian */
#define LANGUAGE_PROGRESS_RUSSIAN_TRANSLATED 99
#define LANGUAGE_PROGRESS_RUSSIAN_TRANSLATED 100
#define LANGUAGE_PROGRESS_RUSSIAN_APPROVED 12
/* Slovak */
@@ -136,7 +136,7 @@
/* Swedish */
#define LANGUAGE_PROGRESS_SWEDISH_TRANSLATED 98
#define LANGUAGE_PROGRESS_SWEDISH_APPROVED 64
#define LANGUAGE_PROGRESS_SWEDISH_APPROVED 65
/* Turkish */
#define LANGUAGE_PROGRESS_TURKISH_TRANSLATED 99
@@ -147,7 +147,7 @@
#define LANGUAGE_PROGRESS_TATAR_APPROVED 0
/* Ukrainian */
#define LANGUAGE_PROGRESS_UKRAINIAN_TRANSLATED 98
#define LANGUAGE_PROGRESS_UKRAINIAN_TRANSLATED 100
#define LANGUAGE_PROGRESS_UKRAINIAN_APPROVED 6
/* Valencian */
+26 -28
View File
@@ -870,6 +870,7 @@ end:
if (pipe)
{
char buf[256];
while (fgets(buf, sizeof(buf), pipe))
{
if (strncmp(buf, "Model name:", 11) == 0)
@@ -881,34 +882,37 @@ end:
while (*p == ' ' || *p == '\t') p++;
size_t len2 = strcspn(p, "\r\n");
char *tmp = (char *)malloc(len2 + 1);
if (tmp)
if (len2 > 0)
{
memcpy(tmp, p, len2);
tmp[len2] = '\0';
if (model_name && *model_name)
char *tmp = malloc(len2 + 1);
if (tmp)
{
size_t oldlen = strlen(model_name);
char *combined = (char *)malloc(oldlen + len2 + 4);
if (combined)
memcpy(tmp, p, len2);
tmp[len2] = '\0';
if (s[0] != '\0')
{
memcpy(combined, model_name, oldlen);
combined[oldlen] = ' ';
combined[oldlen + 1] = '(';
memcpy(combined + oldlen + 2, tmp, len2);
combined[oldlen + 2 + len2] = ')';
combined[oldlen + 2 + len2 + 1] = '\0';
free(model_name);
model_name = combined;
size_t oldlen = strlen(s);
char *combined = malloc(oldlen + len2 + 4);
if (combined)
{
memcpy(combined, s, oldlen);
combined[oldlen] = ' ';
combined[oldlen + 1] = '(';
memcpy(combined + oldlen + 2, tmp, len2);
combined[oldlen + 2 + len2] = ')';
combined[oldlen + 2 + len2 + 1] = '\0';
strlcpy(s, combined, len);
free(combined);
}
}
else
{
strlcpy(s, tmp, len);
}
free(tmp);
}
else
{
free(model_name);
model_name = tmp;
}
}
}
break;
@@ -916,12 +920,6 @@ end:
}
pclose(pipe);
}
if (model_name)
{
strncpy(s, model_name, len);
s[len - 1] = '\0';
}
}
#endif
}
Loaded 100 of 156 files, more files were not shown because too many files have changed in this diff. Show more