diff options
Diffstat (limited to 'drivers')
26 files changed, 377 insertions, 460 deletions
diff --git a/drivers/alsa/asound-so_wrap.c b/drivers/alsa/asound-so_wrap.c index 65624bcb70..6f9c5408d5 100644 --- a/drivers/alsa/asound-so_wrap.c +++ b/drivers/alsa/asound-so_wrap.c @@ -1,12 +1,11 @@ // This file is generated. Do not edit! // see https://github.com/hpvb/dynload-wrapper for details -// generated by /home/hp/Projects/godot/pulse/generate-wrapper.py 0.3 on 2021-02-22 19:22:12 -// flags: /home/hp/Projects/godot/pulse/generate-wrapper.py --include /usr/include/alsa/asoundlib.h --sys-include <alsa/asoundlib.h> --soname libasound.so.2 --init-name asound --omit-prefix snd_pcm_sw_params_set_tstamp_type --omit-prefix snd_pcm_status_get_audio_htstamp_report --omit-prefix snd_pcm_sw_params_get_tstamp_type --omit-prefix snd_pcm_status_set_audio_htstamp_config --output-header asound-so_wrap.h --output-implementation asound-so_wrap.c +// generated by ../dynload-wrapper/generate-wrapper.py 0.3 on 2023-01-12 10:26:13 +// flags: ../dynload-wrapper/generate-wrapper.py --include ./thirdparty/linuxbsd_headers/alsa/asoundlib.h --sys-include "thirdparty/linuxbsd_headers/alsa/asoundlib.h" --soname libasound.so.2 --init-name asound --omit-prefix snd_pcm_sw_params_set_tstamp_type --omit-prefix snd_pcm_status_get_audio_htstamp_report --omit-prefix snd_pcm_sw_params_get_tstamp_type --omit-prefix snd_pcm_status_set_audio_htstamp_config --output-header ./drivers/alsa/asound-so_wrap.h --output-implementation ./drivers/alsa/asound-so_wrap.c // #include <stdint.h> #define snd_asoundlib_version snd_asoundlib_version_dylibloader_orig_asound -#define snd_dlpath snd_dlpath_dylibloader_orig_asound #define snd_dlopen snd_dlopen_dylibloader_orig_asound #define snd_dlsym snd_dlsym_dylibloader_orig_asound #define snd_dlclose snd_dlclose_dylibloader_orig_asound @@ -40,7 +39,6 @@ #define snd_strerror snd_strerror_dylibloader_orig_asound #define snd_lib_error_set_handler snd_lib_error_set_handler_dylibloader_orig_asound #define snd_lib_error_set_local snd_lib_error_set_local_dylibloader_orig_asound -#define snd_config_topdir snd_config_topdir_dylibloader_orig_asound #define snd_config_top snd_config_top_dylibloader_orig_asound #define snd_config_load snd_config_load_dylibloader_orig_asound #define snd_config_load_override snd_config_load_override_dylibloader_orig_asound @@ -58,9 +56,6 @@ #define snd_config_expand snd_config_expand_dylibloader_orig_asound #define snd_config_evaluate snd_config_evaluate_dylibloader_orig_asound #define snd_config_add snd_config_add_dylibloader_orig_asound -#define snd_config_add_before snd_config_add_before_dylibloader_orig_asound -#define snd_config_add_after snd_config_add_after_dylibloader_orig_asound -#define snd_config_remove snd_config_remove_dylibloader_orig_asound #define snd_config_delete snd_config_delete_dylibloader_orig_asound #define snd_config_delete_compound_members snd_config_delete_compound_members_dylibloader_orig_asound #define snd_config_copy snd_config_copy_dylibloader_orig_asound @@ -78,7 +73,6 @@ #define snd_config_imake_safe_string snd_config_imake_safe_string_dylibloader_orig_asound #define snd_config_imake_pointer snd_config_imake_pointer_dylibloader_orig_asound #define snd_config_get_type snd_config_get_type_dylibloader_orig_asound -#define snd_config_is_array snd_config_is_array_dylibloader_orig_asound #define snd_config_set_id snd_config_set_id_dylibloader_orig_asound #define snd_config_set_integer snd_config_set_integer_dylibloader_orig_asound #define snd_config_set_integer64 snd_config_set_integer64_dylibloader_orig_asound @@ -423,7 +417,6 @@ #define snd_pcm_areas_silence snd_pcm_areas_silence_dylibloader_orig_asound #define snd_pcm_area_copy snd_pcm_area_copy_dylibloader_orig_asound #define snd_pcm_areas_copy snd_pcm_areas_copy_dylibloader_orig_asound -#define snd_pcm_areas_copy_wrap snd_pcm_areas_copy_wrap_dylibloader_orig_asound #define snd_pcm_hook_get_pcm snd_pcm_hook_get_pcm_dylibloader_orig_asound #define snd_pcm_hook_get_private snd_pcm_hook_get_private_dylibloader_orig_asound #define snd_pcm_hook_set_private snd_pcm_hook_set_private_dylibloader_orig_asound @@ -1015,7 +1008,6 @@ #define snd_mixer_selem_id_get_index snd_mixer_selem_id_get_index_dylibloader_orig_asound #define snd_mixer_selem_id_set_name snd_mixer_selem_id_set_name_dylibloader_orig_asound #define snd_mixer_selem_id_set_index snd_mixer_selem_id_set_index_dylibloader_orig_asound -#define snd_mixer_selem_id_parse snd_mixer_selem_id_parse_dylibloader_orig_asound #define snd_seq_open snd_seq_open_dylibloader_orig_asound #define snd_seq_open_lconf snd_seq_open_lconf_dylibloader_orig_asound #define snd_seq_name snd_seq_name_dylibloader_orig_asound @@ -1284,9 +1276,8 @@ #define snd_midi_event_encode snd_midi_event_encode_dylibloader_orig_asound #define snd_midi_event_encode_byte snd_midi_event_encode_byte_dylibloader_orig_asound #define snd_midi_event_decode snd_midi_event_decode_dylibloader_orig_asound -#include <alsa/asoundlib.h> +#include "thirdparty/linuxbsd_headers/alsa/asoundlib.h" #undef snd_asoundlib_version -#undef snd_dlpath #undef snd_dlopen #undef snd_dlsym #undef snd_dlclose @@ -1320,7 +1311,6 @@ #undef snd_strerror #undef snd_lib_error_set_handler #undef snd_lib_error_set_local -#undef snd_config_topdir #undef snd_config_top #undef snd_config_load #undef snd_config_load_override @@ -1338,9 +1328,6 @@ #undef snd_config_expand #undef snd_config_evaluate #undef snd_config_add -#undef snd_config_add_before -#undef snd_config_add_after -#undef snd_config_remove #undef snd_config_delete #undef snd_config_delete_compound_members #undef snd_config_copy @@ -1358,7 +1345,6 @@ #undef snd_config_imake_safe_string #undef snd_config_imake_pointer #undef snd_config_get_type -#undef snd_config_is_array #undef snd_config_set_id #undef snd_config_set_integer #undef snd_config_set_integer64 @@ -1703,7 +1689,6 @@ #undef snd_pcm_areas_silence #undef snd_pcm_area_copy #undef snd_pcm_areas_copy -#undef snd_pcm_areas_copy_wrap #undef snd_pcm_hook_get_pcm #undef snd_pcm_hook_get_private #undef snd_pcm_hook_set_private @@ -2295,7 +2280,6 @@ #undef snd_mixer_selem_id_get_index #undef snd_mixer_selem_id_set_name #undef snd_mixer_selem_id_set_index -#undef snd_mixer_selem_id_parse #undef snd_seq_open #undef snd_seq_open_lconf #undef snd_seq_name @@ -2567,8 +2551,7 @@ #include <dlfcn.h> #include <stdio.h> const char* (*snd_asoundlib_version_dylibloader_wrapper_asound)( void); -int (*snd_dlpath_dylibloader_wrapper_asound)( char*, size_t,const char*); -void* (*snd_dlopen_dylibloader_wrapper_asound)(const char*, int, char*, size_t); +void* (*snd_dlopen_dylibloader_wrapper_asound)(const char*, int); void* (*snd_dlsym_dylibloader_wrapper_asound)( void*,const char*,const char*); int (*snd_dlclose_dylibloader_wrapper_asound)( void*); int (*snd_async_add_handler_dylibloader_wrapper_asound)( snd_async_handler_t**, int, snd_async_callback_t, void*); @@ -2601,7 +2584,6 @@ int (*snd_output_flush_dylibloader_wrapper_asound)( snd_output_t*); const char* (*snd_strerror_dylibloader_wrapper_asound)( int); int (*snd_lib_error_set_handler_dylibloader_wrapper_asound)( snd_lib_error_handler_t); snd_local_error_handler_t (*snd_lib_error_set_local_dylibloader_wrapper_asound)( snd_local_error_handler_t); -const char* (*snd_config_topdir_dylibloader_wrapper_asound)( void); int (*snd_config_top_dylibloader_wrapper_asound)( snd_config_t**); int (*snd_config_load_dylibloader_wrapper_asound)( snd_config_t*, snd_input_t*); int (*snd_config_load_override_dylibloader_wrapper_asound)( snd_config_t*, snd_input_t*); @@ -2619,9 +2601,6 @@ int (*snd_config_search_definition_dylibloader_wrapper_asound)( snd_config_t*,co int (*snd_config_expand_dylibloader_wrapper_asound)( snd_config_t*, snd_config_t*,const char*, snd_config_t*, snd_config_t**); int (*snd_config_evaluate_dylibloader_wrapper_asound)( snd_config_t*, snd_config_t*, snd_config_t*, snd_config_t**); int (*snd_config_add_dylibloader_wrapper_asound)( snd_config_t*, snd_config_t*); -int (*snd_config_add_before_dylibloader_wrapper_asound)( snd_config_t*, snd_config_t*); -int (*snd_config_add_after_dylibloader_wrapper_asound)( snd_config_t*, snd_config_t*); -int (*snd_config_remove_dylibloader_wrapper_asound)( snd_config_t*); int (*snd_config_delete_dylibloader_wrapper_asound)( snd_config_t*); int (*snd_config_delete_compound_members_dylibloader_wrapper_asound)(const snd_config_t*); int (*snd_config_copy_dylibloader_wrapper_asound)( snd_config_t**, snd_config_t*); @@ -2639,7 +2618,6 @@ int (*snd_config_imake_string_dylibloader_wrapper_asound)( snd_config_t**,const int (*snd_config_imake_safe_string_dylibloader_wrapper_asound)( snd_config_t**,const char*,const char*); int (*snd_config_imake_pointer_dylibloader_wrapper_asound)( snd_config_t**,const char*,const void*); snd_config_type_t (*snd_config_get_type_dylibloader_wrapper_asound)(const snd_config_t*); -int (*snd_config_is_array_dylibloader_wrapper_asound)(const snd_config_t*); int (*snd_config_set_id_dylibloader_wrapper_asound)( snd_config_t*,const char*); int (*snd_config_set_integer_dylibloader_wrapper_asound)( snd_config_t*, long); int (*snd_config_set_integer64_dylibloader_wrapper_asound)( snd_config_t*, long long); @@ -2984,7 +2962,6 @@ int (*snd_pcm_area_silence_dylibloader_wrapper_asound)(const snd_pcm_channel_are int (*snd_pcm_areas_silence_dylibloader_wrapper_asound)(const snd_pcm_channel_area_t*, snd_pcm_uframes_t, unsigned int, snd_pcm_uframes_t, snd_pcm_format_t); int (*snd_pcm_area_copy_dylibloader_wrapper_asound)(const snd_pcm_channel_area_t*, snd_pcm_uframes_t,const snd_pcm_channel_area_t*, snd_pcm_uframes_t, unsigned int, snd_pcm_format_t); int (*snd_pcm_areas_copy_dylibloader_wrapper_asound)(const snd_pcm_channel_area_t*, snd_pcm_uframes_t,const snd_pcm_channel_area_t*, snd_pcm_uframes_t, unsigned int, snd_pcm_uframes_t, snd_pcm_format_t); -int (*snd_pcm_areas_copy_wrap_dylibloader_wrapper_asound)(const snd_pcm_channel_area_t*, snd_pcm_uframes_t,const snd_pcm_uframes_t,const snd_pcm_channel_area_t*, snd_pcm_uframes_t,const snd_pcm_uframes_t,const unsigned int, snd_pcm_uframes_t,const snd_pcm_format_t); snd_pcm_t* (*snd_pcm_hook_get_pcm_dylibloader_wrapper_asound)( snd_pcm_hook_t*); void* (*snd_pcm_hook_get_private_dylibloader_wrapper_asound)( snd_pcm_hook_t*); void (*snd_pcm_hook_set_private_dylibloader_wrapper_asound)( snd_pcm_hook_t*, void*); @@ -3576,7 +3553,6 @@ const char* (*snd_mixer_selem_id_get_name_dylibloader_wrapper_asound)(const snd_ unsigned int (*snd_mixer_selem_id_get_index_dylibloader_wrapper_asound)(const snd_mixer_selem_id_t*); void (*snd_mixer_selem_id_set_name_dylibloader_wrapper_asound)( snd_mixer_selem_id_t*,const char*); void (*snd_mixer_selem_id_set_index_dylibloader_wrapper_asound)( snd_mixer_selem_id_t*, unsigned int); -int (*snd_mixer_selem_id_parse_dylibloader_wrapper_asound)( snd_mixer_selem_id_t*,const char*); int (*snd_seq_open_dylibloader_wrapper_asound)( snd_seq_t**,const char*, int, int); int (*snd_seq_open_lconf_dylibloader_wrapper_asound)( snd_seq_t**,const char*, int, int, snd_config_t*); const char* (*snd_seq_name_dylibloader_wrapper_asound)( snd_seq_t*); @@ -3864,14 +3840,6 @@ int initialize_asound(int verbose) { fprintf(stderr, "%s\n", error); } } -// snd_dlpath - *(void **) (&snd_dlpath_dylibloader_wrapper_asound) = dlsym(handle, "snd_dlpath"); - if (verbose) { - error = dlerror(); - if (error != NULL) { - fprintf(stderr, "%s\n", error); - } - } // snd_dlopen *(void **) (&snd_dlopen_dylibloader_wrapper_asound) = dlsym(handle, "snd_dlopen"); if (verbose) { @@ -4136,14 +4104,6 @@ int initialize_asound(int verbose) { fprintf(stderr, "%s\n", error); } } -// snd_config_topdir - *(void **) (&snd_config_topdir_dylibloader_wrapper_asound) = dlsym(handle, "snd_config_topdir"); - if (verbose) { - error = dlerror(); - if (error != NULL) { - fprintf(stderr, "%s\n", error); - } - } // snd_config_top *(void **) (&snd_config_top_dylibloader_wrapper_asound) = dlsym(handle, "snd_config_top"); if (verbose) { @@ -4280,30 +4240,6 @@ int initialize_asound(int verbose) { fprintf(stderr, "%s\n", error); } } -// snd_config_add_before - *(void **) (&snd_config_add_before_dylibloader_wrapper_asound) = dlsym(handle, "snd_config_add_before"); - if (verbose) { - error = dlerror(); - if (error != NULL) { - fprintf(stderr, "%s\n", error); - } - } -// snd_config_add_after - *(void **) (&snd_config_add_after_dylibloader_wrapper_asound) = dlsym(handle, "snd_config_add_after"); - if (verbose) { - error = dlerror(); - if (error != NULL) { - fprintf(stderr, "%s\n", error); - } - } -// snd_config_remove - *(void **) (&snd_config_remove_dylibloader_wrapper_asound) = dlsym(handle, "snd_config_remove"); - if (verbose) { - error = dlerror(); - if (error != NULL) { - fprintf(stderr, "%s\n", error); - } - } // snd_config_delete *(void **) (&snd_config_delete_dylibloader_wrapper_asound) = dlsym(handle, "snd_config_delete"); if (verbose) { @@ -4440,14 +4376,6 @@ int initialize_asound(int verbose) { fprintf(stderr, "%s\n", error); } } -// snd_config_is_array - *(void **) (&snd_config_is_array_dylibloader_wrapper_asound) = dlsym(handle, "snd_config_is_array"); - if (verbose) { - error = dlerror(); - if (error != NULL) { - fprintf(stderr, "%s\n", error); - } - } // snd_config_set_id *(void **) (&snd_config_set_id_dylibloader_wrapper_asound) = dlsym(handle, "snd_config_set_id"); if (verbose) { @@ -7200,14 +7128,6 @@ int initialize_asound(int verbose) { fprintf(stderr, "%s\n", error); } } -// snd_pcm_areas_copy_wrap - *(void **) (&snd_pcm_areas_copy_wrap_dylibloader_wrapper_asound) = dlsym(handle, "snd_pcm_areas_copy_wrap"); - if (verbose) { - error = dlerror(); - if (error != NULL) { - fprintf(stderr, "%s\n", error); - } - } // snd_pcm_hook_get_pcm *(void **) (&snd_pcm_hook_get_pcm_dylibloader_wrapper_asound) = dlsym(handle, "snd_pcm_hook_get_pcm"); if (verbose) { @@ -11936,14 +11856,6 @@ int initialize_asound(int verbose) { fprintf(stderr, "%s\n", error); } } -// snd_mixer_selem_id_parse - *(void **) (&snd_mixer_selem_id_parse_dylibloader_wrapper_asound) = dlsym(handle, "snd_mixer_selem_id_parse"); - if (verbose) { - error = dlerror(); - if (error != NULL) { - fprintf(stderr, "%s\n", error); - } - } // snd_seq_open *(void **) (&snd_seq_open_dylibloader_wrapper_asound) = dlsym(handle, "snd_seq_open"); if (verbose) { diff --git a/drivers/alsa/asound-so_wrap.h b/drivers/alsa/asound-so_wrap.h index 5332d74152..ab54f4e8cf 100644 --- a/drivers/alsa/asound-so_wrap.h +++ b/drivers/alsa/asound-so_wrap.h @@ -2,13 +2,12 @@ #define DYLIBLOAD_WRAPPER_ASOUND // This file is generated. Do not edit! // see https://github.com/hpvb/dynload-wrapper for details -// generated by /home/hp/Projects/godot/pulse/generate-wrapper.py 0.3 on 2021-02-22 19:22:12 -// flags: /home/hp/Projects/godot/pulse/generate-wrapper.py --include /usr/include/alsa/asoundlib.h --sys-include <alsa/asoundlib.h> --soname libasound.so.2 --init-name asound --omit-prefix snd_pcm_sw_params_set_tstamp_type --omit-prefix snd_pcm_status_get_audio_htstamp_report --omit-prefix snd_pcm_sw_params_get_tstamp_type --omit-prefix snd_pcm_status_set_audio_htstamp_config --output-header asound-so_wrap.h --output-implementation asound-so_wrap.c +// generated by ../dynload-wrapper/generate-wrapper.py 0.3 on 2023-01-12 10:26:13 +// flags: ../dynload-wrapper/generate-wrapper.py --include ./thirdparty/linuxbsd_headers/alsa/asoundlib.h --sys-include "thirdparty/linuxbsd_headers/alsa/asoundlib.h" --soname libasound.so.2 --init-name asound --omit-prefix snd_pcm_sw_params_set_tstamp_type --omit-prefix snd_pcm_status_get_audio_htstamp_report --omit-prefix snd_pcm_sw_params_get_tstamp_type --omit-prefix snd_pcm_status_set_audio_htstamp_config --output-header ./drivers/alsa/asound-so_wrap.h --output-implementation ./drivers/alsa/asound-so_wrap.c // #include <stdint.h> #define snd_asoundlib_version snd_asoundlib_version_dylibloader_orig_asound -#define snd_dlpath snd_dlpath_dylibloader_orig_asound #define snd_dlopen snd_dlopen_dylibloader_orig_asound #define snd_dlsym snd_dlsym_dylibloader_orig_asound #define snd_dlclose snd_dlclose_dylibloader_orig_asound @@ -42,7 +41,6 @@ #define snd_strerror snd_strerror_dylibloader_orig_asound #define snd_lib_error_set_handler snd_lib_error_set_handler_dylibloader_orig_asound #define snd_lib_error_set_local snd_lib_error_set_local_dylibloader_orig_asound -#define snd_config_topdir snd_config_topdir_dylibloader_orig_asound #define snd_config_top snd_config_top_dylibloader_orig_asound #define snd_config_load snd_config_load_dylibloader_orig_asound #define snd_config_load_override snd_config_load_override_dylibloader_orig_asound @@ -60,9 +58,6 @@ #define snd_config_expand snd_config_expand_dylibloader_orig_asound #define snd_config_evaluate snd_config_evaluate_dylibloader_orig_asound #define snd_config_add snd_config_add_dylibloader_orig_asound -#define snd_config_add_before snd_config_add_before_dylibloader_orig_asound -#define snd_config_add_after snd_config_add_after_dylibloader_orig_asound -#define snd_config_remove snd_config_remove_dylibloader_orig_asound #define snd_config_delete snd_config_delete_dylibloader_orig_asound #define snd_config_delete_compound_members snd_config_delete_compound_members_dylibloader_orig_asound #define snd_config_copy snd_config_copy_dylibloader_orig_asound @@ -80,7 +75,6 @@ #define snd_config_imake_safe_string snd_config_imake_safe_string_dylibloader_orig_asound #define snd_config_imake_pointer snd_config_imake_pointer_dylibloader_orig_asound #define snd_config_get_type snd_config_get_type_dylibloader_orig_asound -#define snd_config_is_array snd_config_is_array_dylibloader_orig_asound #define snd_config_set_id snd_config_set_id_dylibloader_orig_asound #define snd_config_set_integer snd_config_set_integer_dylibloader_orig_asound #define snd_config_set_integer64 snd_config_set_integer64_dylibloader_orig_asound @@ -425,7 +419,6 @@ #define snd_pcm_areas_silence snd_pcm_areas_silence_dylibloader_orig_asound #define snd_pcm_area_copy snd_pcm_area_copy_dylibloader_orig_asound #define snd_pcm_areas_copy snd_pcm_areas_copy_dylibloader_orig_asound -#define snd_pcm_areas_copy_wrap snd_pcm_areas_copy_wrap_dylibloader_orig_asound #define snd_pcm_hook_get_pcm snd_pcm_hook_get_pcm_dylibloader_orig_asound #define snd_pcm_hook_get_private snd_pcm_hook_get_private_dylibloader_orig_asound #define snd_pcm_hook_set_private snd_pcm_hook_set_private_dylibloader_orig_asound @@ -1017,7 +1010,6 @@ #define snd_mixer_selem_id_get_index snd_mixer_selem_id_get_index_dylibloader_orig_asound #define snd_mixer_selem_id_set_name snd_mixer_selem_id_set_name_dylibloader_orig_asound #define snd_mixer_selem_id_set_index snd_mixer_selem_id_set_index_dylibloader_orig_asound -#define snd_mixer_selem_id_parse snd_mixer_selem_id_parse_dylibloader_orig_asound #define snd_seq_open snd_seq_open_dylibloader_orig_asound #define snd_seq_open_lconf snd_seq_open_lconf_dylibloader_orig_asound #define snd_seq_name snd_seq_name_dylibloader_orig_asound @@ -1286,9 +1278,8 @@ #define snd_midi_event_encode snd_midi_event_encode_dylibloader_orig_asound #define snd_midi_event_encode_byte snd_midi_event_encode_byte_dylibloader_orig_asound #define snd_midi_event_decode snd_midi_event_decode_dylibloader_orig_asound -#include <alsa/asoundlib.h> +#include "thirdparty/linuxbsd_headers/alsa/asoundlib.h" #undef snd_asoundlib_version -#undef snd_dlpath #undef snd_dlopen #undef snd_dlsym #undef snd_dlclose @@ -1322,7 +1313,6 @@ #undef snd_strerror #undef snd_lib_error_set_handler #undef snd_lib_error_set_local -#undef snd_config_topdir #undef snd_config_top #undef snd_config_load #undef snd_config_load_override @@ -1340,9 +1330,6 @@ #undef snd_config_expand #undef snd_config_evaluate #undef snd_config_add -#undef snd_config_add_before -#undef snd_config_add_after -#undef snd_config_remove #undef snd_config_delete #undef snd_config_delete_compound_members #undef snd_config_copy @@ -1360,7 +1347,6 @@ #undef snd_config_imake_safe_string #undef snd_config_imake_pointer #undef snd_config_get_type -#undef snd_config_is_array #undef snd_config_set_id #undef snd_config_set_integer #undef snd_config_set_integer64 @@ -1705,7 +1691,6 @@ #undef snd_pcm_areas_silence #undef snd_pcm_area_copy #undef snd_pcm_areas_copy -#undef snd_pcm_areas_copy_wrap #undef snd_pcm_hook_get_pcm #undef snd_pcm_hook_get_private #undef snd_pcm_hook_set_private @@ -2297,7 +2282,6 @@ #undef snd_mixer_selem_id_get_index #undef snd_mixer_selem_id_set_name #undef snd_mixer_selem_id_set_index -#undef snd_mixer_selem_id_parse #undef snd_seq_open #undef snd_seq_open_lconf #undef snd_seq_name @@ -2570,7 +2554,6 @@ extern "C" { #endif #define snd_asoundlib_version snd_asoundlib_version_dylibloader_wrapper_asound -#define snd_dlpath snd_dlpath_dylibloader_wrapper_asound #define snd_dlopen snd_dlopen_dylibloader_wrapper_asound #define snd_dlsym snd_dlsym_dylibloader_wrapper_asound #define snd_dlclose snd_dlclose_dylibloader_wrapper_asound @@ -2604,7 +2587,6 @@ extern "C" { #define snd_strerror snd_strerror_dylibloader_wrapper_asound #define snd_lib_error_set_handler snd_lib_error_set_handler_dylibloader_wrapper_asound #define snd_lib_error_set_local snd_lib_error_set_local_dylibloader_wrapper_asound -#define snd_config_topdir snd_config_topdir_dylibloader_wrapper_asound #define snd_config_top snd_config_top_dylibloader_wrapper_asound #define snd_config_load snd_config_load_dylibloader_wrapper_asound #define snd_config_load_override snd_config_load_override_dylibloader_wrapper_asound @@ -2622,9 +2604,6 @@ extern "C" { #define snd_config_expand snd_config_expand_dylibloader_wrapper_asound #define snd_config_evaluate snd_config_evaluate_dylibloader_wrapper_asound #define snd_config_add snd_config_add_dylibloader_wrapper_asound -#define snd_config_add_before snd_config_add_before_dylibloader_wrapper_asound -#define snd_config_add_after snd_config_add_after_dylibloader_wrapper_asound -#define snd_config_remove snd_config_remove_dylibloader_wrapper_asound #define snd_config_delete snd_config_delete_dylibloader_wrapper_asound #define snd_config_delete_compound_members snd_config_delete_compound_members_dylibloader_wrapper_asound #define snd_config_copy snd_config_copy_dylibloader_wrapper_asound @@ -2642,7 +2621,6 @@ extern "C" { #define snd_config_imake_safe_string snd_config_imake_safe_string_dylibloader_wrapper_asound #define snd_config_imake_pointer snd_config_imake_pointer_dylibloader_wrapper_asound #define snd_config_get_type snd_config_get_type_dylibloader_wrapper_asound -#define snd_config_is_array snd_config_is_array_dylibloader_wrapper_asound #define snd_config_set_id snd_config_set_id_dylibloader_wrapper_asound #define snd_config_set_integer snd_config_set_integer_dylibloader_wrapper_asound #define snd_config_set_integer64 snd_config_set_integer64_dylibloader_wrapper_asound @@ -2987,7 +2965,6 @@ extern "C" { #define snd_pcm_areas_silence snd_pcm_areas_silence_dylibloader_wrapper_asound #define snd_pcm_area_copy snd_pcm_area_copy_dylibloader_wrapper_asound #define snd_pcm_areas_copy snd_pcm_areas_copy_dylibloader_wrapper_asound -#define snd_pcm_areas_copy_wrap snd_pcm_areas_copy_wrap_dylibloader_wrapper_asound #define snd_pcm_hook_get_pcm snd_pcm_hook_get_pcm_dylibloader_wrapper_asound #define snd_pcm_hook_get_private snd_pcm_hook_get_private_dylibloader_wrapper_asound #define snd_pcm_hook_set_private snd_pcm_hook_set_private_dylibloader_wrapper_asound @@ -3579,7 +3556,6 @@ extern "C" { #define snd_mixer_selem_id_get_index snd_mixer_selem_id_get_index_dylibloader_wrapper_asound #define snd_mixer_selem_id_set_name snd_mixer_selem_id_set_name_dylibloader_wrapper_asound #define snd_mixer_selem_id_set_index snd_mixer_selem_id_set_index_dylibloader_wrapper_asound -#define snd_mixer_selem_id_parse snd_mixer_selem_id_parse_dylibloader_wrapper_asound #define snd_seq_open snd_seq_open_dylibloader_wrapper_asound #define snd_seq_open_lconf snd_seq_open_lconf_dylibloader_wrapper_asound #define snd_seq_name snd_seq_name_dylibloader_wrapper_asound @@ -3849,8 +3825,7 @@ extern "C" { #define snd_midi_event_encode_byte snd_midi_event_encode_byte_dylibloader_wrapper_asound #define snd_midi_event_decode snd_midi_event_decode_dylibloader_wrapper_asound extern const char* (*snd_asoundlib_version_dylibloader_wrapper_asound)( void); -extern int (*snd_dlpath_dylibloader_wrapper_asound)( char*, size_t,const char*); -extern void* (*snd_dlopen_dylibloader_wrapper_asound)(const char*, int, char*, size_t); +extern void* (*snd_dlopen_dylibloader_wrapper_asound)(const char*, int); extern void* (*snd_dlsym_dylibloader_wrapper_asound)( void*,const char*,const char*); extern int (*snd_dlclose_dylibloader_wrapper_asound)( void*); extern int (*snd_async_add_handler_dylibloader_wrapper_asound)( snd_async_handler_t**, int, snd_async_callback_t, void*); @@ -3883,7 +3858,6 @@ extern int (*snd_output_flush_dylibloader_wrapper_asound)( snd_output_t*); extern const char* (*snd_strerror_dylibloader_wrapper_asound)( int); extern int (*snd_lib_error_set_handler_dylibloader_wrapper_asound)( snd_lib_error_handler_t); extern snd_local_error_handler_t (*snd_lib_error_set_local_dylibloader_wrapper_asound)( snd_local_error_handler_t); -extern const char* (*snd_config_topdir_dylibloader_wrapper_asound)( void); extern int (*snd_config_top_dylibloader_wrapper_asound)( snd_config_t**); extern int (*snd_config_load_dylibloader_wrapper_asound)( snd_config_t*, snd_input_t*); extern int (*snd_config_load_override_dylibloader_wrapper_asound)( snd_config_t*, snd_input_t*); @@ -3901,9 +3875,6 @@ extern int (*snd_config_search_definition_dylibloader_wrapper_asound)( snd_confi extern int (*snd_config_expand_dylibloader_wrapper_asound)( snd_config_t*, snd_config_t*,const char*, snd_config_t*, snd_config_t**); extern int (*snd_config_evaluate_dylibloader_wrapper_asound)( snd_config_t*, snd_config_t*, snd_config_t*, snd_config_t**); extern int (*snd_config_add_dylibloader_wrapper_asound)( snd_config_t*, snd_config_t*); -extern int (*snd_config_add_before_dylibloader_wrapper_asound)( snd_config_t*, snd_config_t*); -extern int (*snd_config_add_after_dylibloader_wrapper_asound)( snd_config_t*, snd_config_t*); -extern int (*snd_config_remove_dylibloader_wrapper_asound)( snd_config_t*); extern int (*snd_config_delete_dylibloader_wrapper_asound)( snd_config_t*); extern int (*snd_config_delete_compound_members_dylibloader_wrapper_asound)(const snd_config_t*); extern int (*snd_config_copy_dylibloader_wrapper_asound)( snd_config_t**, snd_config_t*); @@ -3921,7 +3892,6 @@ extern int (*snd_config_imake_string_dylibloader_wrapper_asound)( snd_config_t** extern int (*snd_config_imake_safe_string_dylibloader_wrapper_asound)( snd_config_t**,const char*,const char*); extern int (*snd_config_imake_pointer_dylibloader_wrapper_asound)( snd_config_t**,const char*,const void*); extern snd_config_type_t (*snd_config_get_type_dylibloader_wrapper_asound)(const snd_config_t*); -extern int (*snd_config_is_array_dylibloader_wrapper_asound)(const snd_config_t*); extern int (*snd_config_set_id_dylibloader_wrapper_asound)( snd_config_t*,const char*); extern int (*snd_config_set_integer_dylibloader_wrapper_asound)( snd_config_t*, long); extern int (*snd_config_set_integer64_dylibloader_wrapper_asound)( snd_config_t*, long long); @@ -4266,7 +4236,6 @@ extern int (*snd_pcm_area_silence_dylibloader_wrapper_asound)(const snd_pcm_chan extern int (*snd_pcm_areas_silence_dylibloader_wrapper_asound)(const snd_pcm_channel_area_t*, snd_pcm_uframes_t, unsigned int, snd_pcm_uframes_t, snd_pcm_format_t); extern int (*snd_pcm_area_copy_dylibloader_wrapper_asound)(const snd_pcm_channel_area_t*, snd_pcm_uframes_t,const snd_pcm_channel_area_t*, snd_pcm_uframes_t, unsigned int, snd_pcm_format_t); extern int (*snd_pcm_areas_copy_dylibloader_wrapper_asound)(const snd_pcm_channel_area_t*, snd_pcm_uframes_t,const snd_pcm_channel_area_t*, snd_pcm_uframes_t, unsigned int, snd_pcm_uframes_t, snd_pcm_format_t); -extern int (*snd_pcm_areas_copy_wrap_dylibloader_wrapper_asound)(const snd_pcm_channel_area_t*, snd_pcm_uframes_t,const snd_pcm_uframes_t,const snd_pcm_channel_area_t*, snd_pcm_uframes_t,const snd_pcm_uframes_t,const unsigned int, snd_pcm_uframes_t,const snd_pcm_format_t); extern snd_pcm_t* (*snd_pcm_hook_get_pcm_dylibloader_wrapper_asound)( snd_pcm_hook_t*); extern void* (*snd_pcm_hook_get_private_dylibloader_wrapper_asound)( snd_pcm_hook_t*); extern void (*snd_pcm_hook_set_private_dylibloader_wrapper_asound)( snd_pcm_hook_t*, void*); @@ -4858,7 +4827,6 @@ extern const char* (*snd_mixer_selem_id_get_name_dylibloader_wrapper_asound)(con extern unsigned int (*snd_mixer_selem_id_get_index_dylibloader_wrapper_asound)(const snd_mixer_selem_id_t*); extern void (*snd_mixer_selem_id_set_name_dylibloader_wrapper_asound)( snd_mixer_selem_id_t*,const char*); extern void (*snd_mixer_selem_id_set_index_dylibloader_wrapper_asound)( snd_mixer_selem_id_t*, unsigned int); -extern int (*snd_mixer_selem_id_parse_dylibloader_wrapper_asound)( snd_mixer_selem_id_t*,const char*); extern int (*snd_seq_open_dylibloader_wrapper_asound)( snd_seq_t**,const char*, int, int); extern int (*snd_seq_open_lconf_dylibloader_wrapper_asound)( snd_seq_t**,const char*, int, int, snd_config_t*); extern const char* (*snd_seq_name_dylibloader_wrapper_asound)( snd_seq_t*); diff --git a/drivers/coreaudio/audio_driver_coreaudio.cpp b/drivers/coreaudio/audio_driver_coreaudio.cpp index 966a09c6c2..219529d2f6 100644 --- a/drivers/coreaudio/audio_driver_coreaudio.cpp +++ b/drivers/coreaudio/audio_driver_coreaudio.cpp @@ -632,7 +632,7 @@ void AudioDriverCoreAudio::_set_device(const String &device, bool capture) { ERR_FAIL_COND(result != noErr); if (capture) { - // Reset audio input to keep synchronisation. + // Reset audio input to keep synchronization. input_position = 0; input_size = 0; } diff --git a/drivers/gles3/rasterizer_canvas_gles3.cpp b/drivers/gles3/rasterizer_canvas_gles3.cpp index 2887b6b44f..89b1c1889e 100644 --- a/drivers/gles3/rasterizer_canvas_gles3.cpp +++ b/drivers/gles3/rasterizer_canvas_gles3.cpp @@ -803,7 +803,7 @@ void RasterizerCanvasGLES3::_record_item_commands(const Item *p_item, RID p_rend light_count++; - if (light_count == data.max_lights_per_item) { + if (light_count == data.max_lights_per_item - 1) { break; } } @@ -905,10 +905,12 @@ void RasterizerCanvasGLES3::_record_item_commands(const Item *p_item, RID p_rend if (rect->flags & CANVAS_RECT_FLIP_H) { src_rect.size.x *= -1; + state.instance_data_array[r_index].flags |= FLAGS_FLIP_H; } if (rect->flags & CANVAS_RECT_FLIP_V) { src_rect.size.y *= -1; + state.instance_data_array[r_index].flags |= FLAGS_FLIP_V; } if (rect->flags & CANVAS_RECT_TRANSPOSE) { @@ -2652,8 +2654,10 @@ RasterizerCanvasGLES3::RasterizerCanvasGLES3() { shader_type canvas_item; +uniform sampler2D screen_texture : hint_screen_texture, repeat_disable, filter_nearest; + void fragment() { - vec4 c = textureLod(SCREEN_TEXTURE, SCREEN_UV, 0.0); + vec4 c = textureLod(screen_texture, SCREEN_UV, 0.0); if (c.a > 0.0001) { c.rgb /= c.a; @@ -2677,8 +2681,10 @@ void fragment() { shader_type canvas_item; +uniform sampler2D screen_texture : hint_screen_texture, repeat_disable, filter_nearest; + void fragment() { - vec4 c = textureLod(SCREEN_TEXTURE, SCREEN_UV, 0.0); + vec4 c = textureLod(screen_texture, SCREEN_UV, 0.0); COLOR.rgb = c.rgb; } )"); diff --git a/drivers/gles3/rasterizer_canvas_gles3.h b/drivers/gles3/rasterizer_canvas_gles3.h index db9203b249..916e12057c 100644 --- a/drivers/gles3/rasterizer_canvas_gles3.h +++ b/drivers/gles3/rasterizer_canvas_gles3.h @@ -75,6 +75,9 @@ class RasterizerCanvasGLES3 : public RendererCanvasRender { FLAGS_USE_MSDF = (1 << 28), FLAGS_USE_LCD = (1 << 29), + + FLAGS_FLIP_H = (1 << 30), + FLAGS_FLIP_V = (1 << 31), }; enum { diff --git a/drivers/gles3/rasterizer_scene_gles3.cpp b/drivers/gles3/rasterizer_scene_gles3.cpp index e4bcc424b3..9547435607 100644 --- a/drivers/gles3/rasterizer_scene_gles3.cpp +++ b/drivers/gles3/rasterizer_scene_gles3.cpp @@ -1535,8 +1535,6 @@ void RasterizerSceneGLES3::_setup_lights(const RenderDataGLES3 *p_render_data, b } } - li->gl_id = r_omni_light_count; - scene_state.omni_light_sort[r_omni_light_count].instance = li; scene_state.omni_light_sort[r_omni_light_count].depth = distance; r_omni_light_count++; @@ -1560,8 +1558,6 @@ void RasterizerSceneGLES3::_setup_lights(const RenderDataGLES3 *p_render_data, b } } - li->gl_id = r_spot_light_count; - scene_state.spot_light_sort[r_spot_light_count].instance = li; scene_state.spot_light_sort[r_spot_light_count].depth = distance; r_spot_light_count++; @@ -1584,8 +1580,11 @@ void RasterizerSceneGLES3::_setup_lights(const RenderDataGLES3 *p_render_data, b LightData &light_data = (i < r_omni_light_count) ? scene_state.omni_lights[index] : scene_state.spot_lights[index]; RS::LightType type = (i < r_omni_light_count) ? RS::LIGHT_OMNI : RS::LIGHT_SPOT; GLES3::LightInstance *li = (i < r_omni_light_count) ? scene_state.omni_light_sort[index].instance : scene_state.spot_light_sort[index].instance; + real_t distance = (i < r_omni_light_count) ? scene_state.omni_light_sort[index].depth : scene_state.spot_light_sort[index].depth; RID base = li->light; + li->gl_id = index; + Transform3D light_transform = li->transform; Vector3 pos = inverse_transform.xform(light_transform.origin); @@ -1612,13 +1611,11 @@ void RasterizerSceneGLES3::_setup_lights(const RenderDataGLES3 *p_render_data, b // Reuse fade begin, fade length and distance for shadow LOD determination later. float fade_begin = 0.0; float fade_length = 0.0; - real_t distance = 0.0; float fade = 1.0; if (light_storage->light_is_distance_fade_enabled(li->light)) { fade_begin = light_storage->light_get_distance_fade_begin(li->light); fade_length = light_storage->light_get_distance_fade_length(li->light); - distance = p_render_data->cam_transform.origin.distance_to(li->transform.origin); if (distance > fade_begin) { // Use `smoothstep()` to make opacity changes more gradual and less noticeable to the player. diff --git a/drivers/gles3/shaders/canvas.glsl b/drivers/gles3/shaders/canvas.glsl index 9a90f33674..1631c65385 100644 --- a/drivers/gles3/shaders/canvas.glsl +++ b/drivers/gles3/shaders/canvas.glsl @@ -277,7 +277,7 @@ flat in uvec4 varying_G; uniform sampler2D atlas_texture; //texunit:-2 uniform sampler2D shadow_atlas_texture; //texunit:-3 #endif // DISABLE_LIGHTING -uniform sampler2D screen_texture; //texunit:-4 +uniform sampler2D color_buffer; //texunit:-4 uniform sampler2D sdf_texture; //texunit:-5 uniform sampler2D normal_texture; //texunit:-6 uniform sampler2D specular_texture; //texunit:-7 @@ -579,6 +579,12 @@ void main() { if (normal_used || (using_light && bool(read_draw_data_flags & FLAGS_DEFAULT_NORMAL_MAP_USED))) { normal.xy = texture(normal_texture, uv).xy * vec2(2.0, -2.0) - vec2(1.0, -1.0); + if (bool(read_draw_data_flags & FLAGS_FLIP_H)) { + normal.x = -normal.x; + } + if (bool(read_draw_data_flags & FLAGS_FLIP_V)) { + normal.y = -normal.y; + } normal.z = sqrt(1.0 - dot(normal.xy, normal.xy)); normal_used = true; } else { diff --git a/drivers/gles3/shaders/canvas_uniforms_inc.glsl b/drivers/gles3/shaders/canvas_uniforms_inc.glsl index f65558f042..d53c0fcb26 100644 --- a/drivers/gles3/shaders/canvas_uniforms_inc.glsl +++ b/drivers/gles3/shaders/canvas_uniforms_inc.glsl @@ -27,6 +27,9 @@ #define FLAGS_USE_MSDF uint(1 << 28) #define FLAGS_USE_LCD uint(1 << 29) +#define FLAGS_FLIP_H uint(1 << 30) +#define FLAGS_FLIP_V uint(1 << 31) + layout(std140) uniform GlobalShaderUniformData { //ubo:1 vec4 global_shader_uniforms[MAX_GLOBAL_SHADER_UNIFORMS]; }; diff --git a/drivers/gles3/shaders/scene.glsl b/drivers/gles3/shaders/scene.glsl index 1b922fa726..52ff70f746 100644 --- a/drivers/gles3/shaders/scene.glsl +++ b/drivers/gles3/shaders/scene.glsl @@ -564,10 +564,10 @@ uniform highp samplerCubeShadow positional_shadow; // texunit:-4 #ifdef USE_MULTIVIEW uniform highp sampler2DArray depth_buffer; // texunit:-6 -uniform highp sampler2DArray screen_texture; // texunit:-5 +uniform highp sampler2DArray color_buffer; // texunit:-5 #else uniform highp sampler2D depth_buffer; // texunit:-6 -uniform highp sampler2D screen_texture; // texunit:-5 +uniform highp sampler2D color_buffer; // texunit:-5 #endif uniform highp mat4 world_transform; @@ -690,7 +690,8 @@ void light_compute(vec3 N, vec3 L, vec3 V, float A, vec3 light_color, float atte #endif #if defined(LIGHT_RIM_USED) - float rim_light = pow(max(0.0, 1.0 - cNdotV), max(0.0, (1.0 - roughness) * 16.0)); + // Epsilon min to prevent pow(0, 0) singularity which results in undefined behavior. + float rim_light = pow(max(1e-4, 1.0 - cNdotV), max(0.0, (1.0 - roughness) * 16.0)); diffuse_light += rim_light * rim * mix(vec3(1.0), albedo, rim_tint) * light_color; #endif } diff --git a/drivers/gles3/storage/light_storage.h b/drivers/gles3/storage/light_storage.h index a304b6a265..8b2bdaf872 100644 --- a/drivers/gles3/storage/light_storage.h +++ b/drivers/gles3/storage/light_storage.h @@ -113,7 +113,7 @@ struct ReflectionProbe { Color ambient_color; float ambient_color_energy = 1.0; float max_distance = 0; - Vector3 extents = Vector3(1, 1, 1); + Vector3 extents = Vector3(10, 10, 10); Vector3 origin_offset; bool interior = false; bool box_projection = false; diff --git a/drivers/gles3/storage/material_storage.cpp b/drivers/gles3/storage/material_storage.cpp index e54fad1551..50e5c868d3 100644 --- a/drivers/gles3/storage/material_storage.cpp +++ b/drivers/gles3/storage/material_storage.cpp @@ -1515,7 +1515,6 @@ MaterialStorage::MaterialStorage() { actions.renames["SPECULAR_SHININESS_TEXTURE"] = "specular_texture"; actions.renames["SPECULAR_SHININESS"] = "specular_shininess"; actions.renames["SCREEN_UV"] = "screen_uv"; - actions.renames["SCREEN_TEXTURE"] = "screen_texture"; actions.renames["SCREEN_PIXEL_SIZE"] = "screen_pixel_size"; actions.renames["FRAGCOORD"] = "gl_FragCoord"; actions.renames["POINT_COORD"] = "gl_PointCoord"; @@ -1536,7 +1535,6 @@ MaterialStorage::MaterialStorage() { actions.renames["screen_uv_to_sdf"] = "screen_uv_to_sdf"; actions.usage_defines["COLOR"] = "#define COLOR_USED\n"; - actions.usage_defines["SCREEN_TEXTURE"] = "#define SCREEN_TEXTURE_USED\n"; actions.usage_defines["SCREEN_UV"] = "#define SCREEN_UV_USED\n"; actions.usage_defines["SCREEN_PIXEL_SIZE"] = "@SCREEN_UV"; actions.usage_defines["NORMAL"] = "#define NORMAL_USED\n"; @@ -1617,9 +1615,6 @@ MaterialStorage::MaterialStorage() { actions.renames["POINT_COORD"] = "gl_PointCoord"; actions.renames["INSTANCE_CUSTOM"] = "instance_custom"; actions.renames["SCREEN_UV"] = "screen_uv"; - //actions.renames["SCREEN_TEXTURE"] = "color_buffer"; //Not implemented in 3D yet. - //actions.renames["DEPTH_TEXTURE"] = "depth_buffer"; // Not implemented in 3D yet. - //actions.renames["NORMAL_ROUGHNESS_TEXTURE"] = "normal_roughness_buffer"; // Not implemented in 3D yet actions.renames["DEPTH"] = "gl_FragDepth"; actions.renames["OUTPUT_IS_SRGB"] = "true"; actions.renames["FOG"] = "fog"; @@ -1684,7 +1679,6 @@ MaterialStorage::MaterialStorage() { actions.usage_defines["SSS_STRENGTH"] = "#define ENABLE_SSS\n"; actions.usage_defines["SSS_TRANSMITTANCE_DEPTH"] = "#define ENABLE_TRANSMITTANCE\n"; actions.usage_defines["BACKLIGHT"] = "#define LIGHT_BACKLIGHT_USED\n"; - actions.usage_defines["SCREEN_TEXTURE"] = "#define SCREEN_TEXTURE_USED\n"; actions.usage_defines["SCREEN_UV"] = "#define SCREEN_UV_USED\n"; actions.usage_defines["DIFFUSE_LIGHT"] = "#define USE_LIGHT_SHADER_CODE\n"; @@ -2765,6 +2759,14 @@ void MaterialStorage::material_free(RID p_rid) { Material *material = material_owner.get_or_null(p_rid); ERR_FAIL_COND(!material); + // Need to clear texture arrays to prevent spin locking of their RID's. + // This happens when the app is being closed. + for (KeyValue<StringName, Variant> &E : material->params) { + if (E.value.get_type() == Variant::ARRAY) { + Array(E.value).clear(); + } + } + material_set_shader(p_rid, RID()); //clean up shader material->dependency.deleted_notify(p_rid); @@ -2952,7 +2954,6 @@ void CanvasShaderData::set_code(const String &p_code) { actions.render_mode_values["blend_premul_alpha"] = Pair<int *, int>(&blend_modei, BLEND_MODE_PMALPHA); actions.render_mode_values["blend_disabled"] = Pair<int *, int>(&blend_modei, BLEND_MODE_DISABLED); - actions.usage_flag_pointers["SCREEN_TEXTURE"] = &uses_screen_texture; actions.usage_flag_pointers["texture_sdf"] = &uses_sdf; actions.usage_flag_pointers["TIME"] = &uses_time; @@ -2966,6 +2967,7 @@ void CanvasShaderData::set_code(const String &p_code) { blend_mode = BlendMode(blend_modei); uses_screen_texture_mipmaps = gen_code.uses_screen_texture_mipmaps; + uses_screen_texture = gen_code.uses_screen_texture; #if 0 print_line("**compiling shader:"); @@ -3301,9 +3303,6 @@ void SceneShaderData::set_code(const String &p_code) { actions.usage_flag_pointers["SSS_STRENGTH"] = &uses_sss; actions.usage_flag_pointers["SSS_TRANSMITTANCE_DEPTH"] = &uses_transmittance; - actions.usage_flag_pointers["SCREEN_TEXTURE"] = &uses_screen_texture; - actions.usage_flag_pointers["DEPTH_TEXTURE"] = &uses_depth_texture; - actions.usage_flag_pointers["NORMAL_TEXTURE"] = &uses_normal_texture; actions.usage_flag_pointers["DISCARD"] = &uses_discard; actions.usage_flag_pointers["TIME"] = &uses_time; actions.usage_flag_pointers["ROUGHNESS"] = &uses_roughness; @@ -3356,6 +3355,9 @@ void SceneShaderData::set_code(const String &p_code) { vertex_input_mask |= uses_bones << 9; vertex_input_mask |= uses_weights << 10; uses_screen_texture_mipmaps = gen_code.uses_screen_texture_mipmaps; + uses_screen_texture = gen_code.uses_screen_texture; + uses_depth_texture = gen_code.uses_depth_texture; + uses_normal_texture = gen_code.uses_normal_roughness_texture; uses_vertex_time = gen_code.uses_vertex_time; uses_fragment_time = gen_code.uses_fragment_time; diff --git a/drivers/gles3/storage/render_scene_buffers_gles3.cpp b/drivers/gles3/storage/render_scene_buffers_gles3.cpp index 65c4ca6131..19bf57df94 100644 --- a/drivers/gles3/storage/render_scene_buffers_gles3.cpp +++ b/drivers/gles3/storage/render_scene_buffers_gles3.cpp @@ -37,13 +37,14 @@ RenderSceneBuffersGLES3::~RenderSceneBuffersGLES3() { free_render_buffer_data(); } -void RenderSceneBuffersGLES3::configure(RID p_render_target, const Size2i p_internal_size, const Size2i p_target_size, float p_fsr_sharpness, float p_texture_mipmap_bias, RS::ViewportMSAA p_msaa, RenderingServer::ViewportScreenSpaceAA p_screen_space_aa, bool p_use_taa, bool p_use_debanding, uint32_t p_view_count) { +void RenderSceneBuffersGLES3::configure(RID p_render_target, const Size2i p_internal_size, const Size2i p_target_size, RS::ViewportScaling3DMode p_scaling_3d_mode, float p_fsr_sharpness, float p_texture_mipmap_bias, RS::ViewportMSAA p_msaa, RenderingServer::ViewportScreenSpaceAA p_screen_space_aa, bool p_use_taa, bool p_use_debanding, uint32_t p_view_count) { GLES3::TextureStorage *texture_storage = GLES3::TextureStorage::get_singleton(); //internal_size.x = p_internal_size.x; // ignore for now //internal_size.y = p_internal_size.y; width = p_target_size.x; height = p_target_size.y; + //scaling_3d_mode = p_scaling_3d_mode //fsr_sharpness = p_fsr_sharpness; //texture_mipmap_bias = p_texture_mipmap_bias; render_target = p_render_target; diff --git a/drivers/gles3/storage/render_scene_buffers_gles3.h b/drivers/gles3/storage/render_scene_buffers_gles3.h index 52a7737910..d07a0812f6 100644 --- a/drivers/gles3/storage/render_scene_buffers_gles3.h +++ b/drivers/gles3/storage/render_scene_buffers_gles3.h @@ -81,7 +81,7 @@ public: private: public: virtual ~RenderSceneBuffersGLES3(); - virtual void configure(RID p_render_target, const Size2i p_internal_size, const Size2i p_target_size, float p_fsr_sharpness, float p_texture_mipmap_bias, RS::ViewportMSAA p_msaa, RenderingServer::ViewportScreenSpaceAA p_screen_space_aa, bool p_use_taa, bool p_use_debanding, uint32_t p_view_count) override; + virtual void configure(RID p_render_target, const Size2i p_internal_size, const Size2i p_target_size, RS::ViewportScaling3DMode p_scaling_3d_mode, float p_fsr_sharpness, float p_texture_mipmap_bias, RS::ViewportMSAA p_msaa, RenderingServer::ViewportScreenSpaceAA p_screen_space_aa, bool p_use_taa, bool p_use_debanding, uint32_t p_view_count) override; virtual void set_fsr_sharpness(float p_fsr_sharpness) override{}; virtual void set_texture_mipmap_bias(float p_texture_mipmap_bias) override{}; diff --git a/drivers/gles3/storage/texture_storage.cpp b/drivers/gles3/storage/texture_storage.cpp index 489c328f64..67526bc003 100644 --- a/drivers/gles3/storage/texture_storage.cpp +++ b/drivers/gles3/storage/texture_storage.cpp @@ -567,23 +567,29 @@ Ref<Image> TextureStorage::_get_gl_image_and_format(const Ref<Image> &p_image, I } } break; case Image::FORMAT_ETC2_RA_AS_RG: { +#ifndef WEB_ENABLED if (config->etc2_supported) { r_gl_internal_format = _EXT_COMPRESSED_RGBA8_ETC2_EAC; r_gl_format = GL_RGBA; r_gl_type = GL_UNSIGNED_BYTE; r_compressed = true; - } else { + } else +#endif + { need_decompress = true; } decompress_ra_to_rg = true; } break; case Image::FORMAT_DXT5_RA_AS_RG: { +#ifndef WEB_ENABLED if (config->s3tc_supported) { r_gl_internal_format = _EXT_COMPRESSED_RGBA_S3TC_DXT5_EXT; r_gl_format = GL_RGBA; r_gl_type = GL_UNSIGNED_BYTE; r_compressed = true; - } else { + } else +#endif + { need_decompress = true; } decompress_ra_to_rg = true; @@ -1137,6 +1143,7 @@ void TextureStorage::texture_set_data(RID p_texture, const Ref<Image> &p_image, texture->gl_set_filter(RS::CANVAS_ITEM_TEXTURE_FILTER_NEAREST); texture->gl_set_repeat(RS::CANVAS_ITEM_TEXTURE_REPEAT_ENABLED); +#ifndef WEB_ENABLED switch (texture->format) { #ifdef GLES_OVER_GL case Image::FORMAT_L8: { @@ -1151,7 +1158,8 @@ void TextureStorage::texture_set_data(RID p_texture, const Ref<Image> &p_image, glTexParameteri(texture->target, GL_TEXTURE_SWIZZLE_B, GL_RED); glTexParameteri(texture->target, GL_TEXTURE_SWIZZLE_A, GL_GREEN); } break; -#endif +#endif // GLES3_OVER_GL + case Image::FORMAT_ETC2_RA_AS_RG: case Image::FORMAT_DXT5_RA_AS_RG: { glTexParameteri(texture->target, GL_TEXTURE_SWIZZLE_R, GL_RED); @@ -1172,6 +1180,7 @@ void TextureStorage::texture_set_data(RID p_texture, const Ref<Image> &p_image, glTexParameteri(texture->target, GL_TEXTURE_SWIZZLE_A, GL_ALPHA); } break; } +#endif // WEB_ENABLED int mipmaps = img->has_mipmaps() ? img->get_mipmap_count() + 1 : 1; @@ -1525,18 +1534,6 @@ AABB TextureStorage::decal_get_aabb(RID p_decal) const { return AABB(); } -/* DECAL INSTANCE API */ - -RID TextureStorage::decal_instance_create(RID p_decal) { - return RID(); -} - -void TextureStorage::decal_instance_free(RID p_decal_instance) { -} - -void TextureStorage::decal_instance_set_transform(RID p_decal, const Transform3D &p_transform) { -} - /* RENDER TARGET API */ GLuint TextureStorage::system_fbo = 0; @@ -1599,9 +1596,13 @@ void TextureStorage::_update_render_target(RenderTarget *rt) { glTexParameteri(texture_target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(texture_target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); } +#ifndef IOS_ENABLED if (use_multiview) { glFramebufferTextureMultiviewOVR(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, rt->color, 0, 0, rt->view_count); } else { +#else + { +#endif glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, rt->color, 0); } @@ -1626,9 +1627,13 @@ void TextureStorage::_update_render_target(RenderTarget *rt) { glTexParameteri(texture_target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(texture_target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); } +#ifndef IOS_ENABLED if (use_multiview) { glFramebufferTextureMultiviewOVR(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, rt->depth, 0, 0, rt->view_count); } else { +#else + { +#endif glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, rt->depth, 0); } diff --git a/drivers/gles3/storage/texture_storage.h b/drivers/gles3/storage/texture_storage.h index 9ffe16fd16..9d3f407226 100644 --- a/drivers/gles3/storage/texture_storage.h +++ b/drivers/gles3/storage/texture_storage.h @@ -561,9 +561,10 @@ public: /* DECAL INSTANCE */ - virtual RID decal_instance_create(RID p_decal) override; - virtual void decal_instance_free(RID p_decal_instance) override; - virtual void decal_instance_set_transform(RID p_decal, const Transform3D &p_transform) override; + virtual RID decal_instance_create(RID p_decal) override { return RID(); } + virtual void decal_instance_free(RID p_decal_instance) override {} + virtual void decal_instance_set_transform(RID p_decal, const Transform3D &p_transform) override {} + virtual void decal_instance_set_sorting_offset(RID p_decal_instance, float p_sorting_offset) override {} /* RENDER TARGET API */ diff --git a/drivers/pulseaudio/audio_driver_pulseaudio.cpp b/drivers/pulseaudio/audio_driver_pulseaudio.cpp index 1c1255ce98..e14c3c7f7a 100644 --- a/drivers/pulseaudio/audio_driver_pulseaudio.cpp +++ b/drivers/pulseaudio/audio_driver_pulseaudio.cpp @@ -264,7 +264,7 @@ Error AudioDriverPulseAudio::init_device() { samples_in.resize(buffer_frames * channels); samples_out.resize(pa_buffer_size); - // Reset audio input to keep synchronisation. + // Reset audio input to keep synchronization. input_position = 0; input_size = 0; diff --git a/drivers/pulseaudio/pulse-so_wrap.c b/drivers/pulseaudio/pulse-so_wrap.c index 12bdcc704e..1765d7e7e6 100644 --- a/drivers/pulseaudio/pulse-so_wrap.c +++ b/drivers/pulseaudio/pulse-so_wrap.c @@ -1,7 +1,7 @@ // This file is generated. Do not edit! // see https://github.com/hpvb/dynload-wrapper for details -// generated by /home/hp/Projects/godot/pulse/generate-wrapper.py 0.3 on 2021-02-20 00:08:31 -// flags: /home/hp/Projects/godot/pulse/generate-wrapper.py --include /usr/include/pulse/pulseaudio.h --sys-include <pulse/pulseaudio.h> --soname libpulse.so.0 --omit-prefix _pa_ --init-name pulse --output-header pulse-so_wrap.h --output-implementation pulse-so_wrap.c +// generated by ../dynload-wrapper/generate-wrapper.py 0.3 on 2023-01-12 10:26:29 +// flags: ../dynload-wrapper/generate-wrapper.py --include ./thirdparty/linuxbsd_headers/pulse/pulseaudio.h --sys-include "thirdparty/linuxbsd_headers/pulse/pulseaudio.h" --soname libpulse.so.0 --omit-prefix _pa_ --init-name pulse --output-header ./drivers/pulseaudio/pulse-so_wrap.h --output-implementation ./drivers/pulseaudio/pulse-so_wrap.c // #include <stdint.h> @@ -89,10 +89,6 @@ #define pa_format_info_get_prop_string pa_format_info_get_prop_string_dylibloader_orig_pulse #define pa_format_info_get_prop_string_array pa_format_info_get_prop_string_array_dylibloader_orig_pulse #define pa_format_info_free_string_array pa_format_info_free_string_array_dylibloader_orig_pulse -#define pa_format_info_get_sample_format pa_format_info_get_sample_format_dylibloader_orig_pulse -#define pa_format_info_get_rate pa_format_info_get_rate_dylibloader_orig_pulse -#define pa_format_info_get_channels pa_format_info_get_channels_dylibloader_orig_pulse -#define pa_format_info_get_channel_map pa_format_info_get_channel_map_dylibloader_orig_pulse #define pa_format_info_set_prop_int pa_format_info_set_prop_int_dylibloader_orig_pulse #define pa_format_info_set_prop_int_array pa_format_info_set_prop_int_array_dylibloader_orig_pulse #define pa_format_info_set_prop_int_range pa_format_info_set_prop_int_range_dylibloader_orig_pulse @@ -327,7 +323,6 @@ #define pa_threaded_mainloop_get_api pa_threaded_mainloop_get_api_dylibloader_orig_pulse #define pa_threaded_mainloop_in_thread pa_threaded_mainloop_in_thread_dylibloader_orig_pulse #define pa_threaded_mainloop_set_name pa_threaded_mainloop_set_name_dylibloader_orig_pulse -#define pa_threaded_mainloop_once_unlocked pa_threaded_mainloop_once_unlocked_dylibloader_orig_pulse #define pa_mainloop_new pa_mainloop_new_dylibloader_orig_pulse #define pa_mainloop_free pa_mainloop_free_dylibloader_orig_pulse #define pa_mainloop_prepare pa_mainloop_prepare_dylibloader_orig_pulse @@ -352,7 +347,6 @@ #define pa_get_binary_name pa_get_binary_name_dylibloader_orig_pulse #define pa_path_get_filename pa_path_get_filename_dylibloader_orig_pulse #define pa_msleep pa_msleep_dylibloader_orig_pulse -#define pa_thread_make_realtime pa_thread_make_realtime_dylibloader_orig_pulse #define pa_gettimeofday pa_gettimeofday_dylibloader_orig_pulse #define pa_timeval_diff pa_timeval_diff_dylibloader_orig_pulse #define pa_timeval_cmp pa_timeval_cmp_dylibloader_orig_pulse @@ -362,7 +356,7 @@ #define pa_timeval_store pa_timeval_store_dylibloader_orig_pulse #define pa_timeval_load pa_timeval_load_dylibloader_orig_pulse #define pa_rtclock_now pa_rtclock_now_dylibloader_orig_pulse -#include <pulse/pulseaudio.h> +#include "thirdparty/linuxbsd_headers/pulse/pulseaudio.h" #undef pa_get_library_version #undef pa_bytes_per_second #undef pa_frame_size @@ -447,10 +441,6 @@ #undef pa_format_info_get_prop_string #undef pa_format_info_get_prop_string_array #undef pa_format_info_free_string_array -#undef pa_format_info_get_sample_format -#undef pa_format_info_get_rate -#undef pa_format_info_get_channels -#undef pa_format_info_get_channel_map #undef pa_format_info_set_prop_int #undef pa_format_info_set_prop_int_array #undef pa_format_info_set_prop_int_range @@ -685,7 +675,6 @@ #undef pa_threaded_mainloop_get_api #undef pa_threaded_mainloop_in_thread #undef pa_threaded_mainloop_set_name -#undef pa_threaded_mainloop_once_unlocked #undef pa_mainloop_new #undef pa_mainloop_free #undef pa_mainloop_prepare @@ -710,7 +699,6 @@ #undef pa_get_binary_name #undef pa_path_get_filename #undef pa_msleep -#undef pa_thread_make_realtime #undef pa_gettimeofday #undef pa_timeval_diff #undef pa_timeval_cmp @@ -751,21 +739,21 @@ int (*pa_proplist_sets_dylibloader_wrapper_pulse)( pa_proplist*,const char*,cons int (*pa_proplist_setp_dylibloader_wrapper_pulse)( pa_proplist*,const char*); int (*pa_proplist_setf_dylibloader_wrapper_pulse)( pa_proplist*,const char*,const char*,...); int (*pa_proplist_set_dylibloader_wrapper_pulse)( pa_proplist*,const char*,const void*, size_t); -const char* (*pa_proplist_gets_dylibloader_wrapper_pulse)(const pa_proplist*,const char*); -int (*pa_proplist_get_dylibloader_wrapper_pulse)(const pa_proplist*,const char*,const void**, size_t*); +const char* (*pa_proplist_gets_dylibloader_wrapper_pulse)( pa_proplist*,const char*); +int (*pa_proplist_get_dylibloader_wrapper_pulse)( pa_proplist*,const char*,const void**, size_t*); void (*pa_proplist_update_dylibloader_wrapper_pulse)( pa_proplist*, pa_update_mode_t,const pa_proplist*); int (*pa_proplist_unset_dylibloader_wrapper_pulse)( pa_proplist*,const char*); int (*pa_proplist_unset_many_dylibloader_wrapper_pulse)( pa_proplist*,const char* []); -const char* (*pa_proplist_iterate_dylibloader_wrapper_pulse)(const pa_proplist*, void**); -char* (*pa_proplist_to_string_dylibloader_wrapper_pulse)(const pa_proplist*); -char* (*pa_proplist_to_string_sep_dylibloader_wrapper_pulse)(const pa_proplist*,const char*); +const char* (*pa_proplist_iterate_dylibloader_wrapper_pulse)( pa_proplist*, void**); +char* (*pa_proplist_to_string_dylibloader_wrapper_pulse)( pa_proplist*); +char* (*pa_proplist_to_string_sep_dylibloader_wrapper_pulse)( pa_proplist*,const char*); pa_proplist* (*pa_proplist_from_string_dylibloader_wrapper_pulse)(const char*); -int (*pa_proplist_contains_dylibloader_wrapper_pulse)(const pa_proplist*,const char*); +int (*pa_proplist_contains_dylibloader_wrapper_pulse)( pa_proplist*,const char*); void (*pa_proplist_clear_dylibloader_wrapper_pulse)( pa_proplist*); pa_proplist* (*pa_proplist_copy_dylibloader_wrapper_pulse)(const pa_proplist*); -unsigned (*pa_proplist_size_dylibloader_wrapper_pulse)(const pa_proplist*); -int (*pa_proplist_isempty_dylibloader_wrapper_pulse)(const pa_proplist*); -int (*pa_proplist_equal_dylibloader_wrapper_pulse)(const pa_proplist*,const pa_proplist*); +unsigned (*pa_proplist_size_dylibloader_wrapper_pulse)( pa_proplist*); +int (*pa_proplist_isempty_dylibloader_wrapper_pulse)( pa_proplist*); +int (*pa_proplist_equal_dylibloader_wrapper_pulse)( pa_proplist*, pa_proplist*); pa_channel_map* (*pa_channel_map_init_dylibloader_wrapper_pulse)( pa_channel_map*); pa_channel_map* (*pa_channel_map_init_mono_dylibloader_wrapper_pulse)( pa_channel_map*); pa_channel_map* (*pa_channel_map_init_stereo_dylibloader_wrapper_pulse)( pa_channel_map*); @@ -806,10 +794,6 @@ int (*pa_format_info_get_prop_int_array_dylibloader_wrapper_pulse)(const pa_form int (*pa_format_info_get_prop_string_dylibloader_wrapper_pulse)(const pa_format_info*,const char*, char**); int (*pa_format_info_get_prop_string_array_dylibloader_wrapper_pulse)(const pa_format_info*,const char*, char***, int*); void (*pa_format_info_free_string_array_dylibloader_wrapper_pulse)( char**, int); -int (*pa_format_info_get_sample_format_dylibloader_wrapper_pulse)(const pa_format_info*, pa_sample_format_t*); -int (*pa_format_info_get_rate_dylibloader_wrapper_pulse)(const pa_format_info*, uint32_t*); -int (*pa_format_info_get_channels_dylibloader_wrapper_pulse)(const pa_format_info*, uint8_t*); -int (*pa_format_info_get_channel_map_dylibloader_wrapper_pulse)(const pa_format_info*, pa_channel_map*); void (*pa_format_info_set_prop_int_dylibloader_wrapper_pulse)( pa_format_info*,const char*, int); void (*pa_format_info_set_prop_int_array_dylibloader_wrapper_pulse)( pa_format_info*,const char*,const int*, int); void (*pa_format_info_set_prop_int_range_dylibloader_wrapper_pulse)( pa_format_info*,const char*, int, int); @@ -822,34 +806,34 @@ void (*pa_format_info_set_channel_map_dylibloader_wrapper_pulse)( pa_format_info pa_operation* (*pa_operation_ref_dylibloader_wrapper_pulse)( pa_operation*); void (*pa_operation_unref_dylibloader_wrapper_pulse)( pa_operation*); void (*pa_operation_cancel_dylibloader_wrapper_pulse)( pa_operation*); -pa_operation_state_t (*pa_operation_get_state_dylibloader_wrapper_pulse)(const pa_operation*); +pa_operation_state_t (*pa_operation_get_state_dylibloader_wrapper_pulse)( pa_operation*); void (*pa_operation_set_state_callback_dylibloader_wrapper_pulse)( pa_operation*, pa_operation_notify_cb_t, void*); pa_context* (*pa_context_new_dylibloader_wrapper_pulse)( pa_mainloop_api*,const char*); -pa_context* (*pa_context_new_with_proplist_dylibloader_wrapper_pulse)( pa_mainloop_api*,const char*,const pa_proplist*); +pa_context* (*pa_context_new_with_proplist_dylibloader_wrapper_pulse)( pa_mainloop_api*,const char*, pa_proplist*); void (*pa_context_unref_dylibloader_wrapper_pulse)( pa_context*); pa_context* (*pa_context_ref_dylibloader_wrapper_pulse)( pa_context*); void (*pa_context_set_state_callback_dylibloader_wrapper_pulse)( pa_context*, pa_context_notify_cb_t, void*); void (*pa_context_set_event_callback_dylibloader_wrapper_pulse)( pa_context*, pa_context_event_cb_t, void*); -int (*pa_context_errno_dylibloader_wrapper_pulse)(const pa_context*); -int (*pa_context_is_pending_dylibloader_wrapper_pulse)(const pa_context*); -pa_context_state_t (*pa_context_get_state_dylibloader_wrapper_pulse)(const pa_context*); +int (*pa_context_errno_dylibloader_wrapper_pulse)( pa_context*); +int (*pa_context_is_pending_dylibloader_wrapper_pulse)( pa_context*); +pa_context_state_t (*pa_context_get_state_dylibloader_wrapper_pulse)( pa_context*); int (*pa_context_connect_dylibloader_wrapper_pulse)( pa_context*,const char*, pa_context_flags_t,const pa_spawn_api*); void (*pa_context_disconnect_dylibloader_wrapper_pulse)( pa_context*); pa_operation* (*pa_context_drain_dylibloader_wrapper_pulse)( pa_context*, pa_context_notify_cb_t, void*); pa_operation* (*pa_context_exit_daemon_dylibloader_wrapper_pulse)( pa_context*, pa_context_success_cb_t, void*); pa_operation* (*pa_context_set_default_sink_dylibloader_wrapper_pulse)( pa_context*,const char*, pa_context_success_cb_t, void*); pa_operation* (*pa_context_set_default_source_dylibloader_wrapper_pulse)( pa_context*,const char*, pa_context_success_cb_t, void*); -int (*pa_context_is_local_dylibloader_wrapper_pulse)(const pa_context*); +int (*pa_context_is_local_dylibloader_wrapper_pulse)( pa_context*); pa_operation* (*pa_context_set_name_dylibloader_wrapper_pulse)( pa_context*,const char*, pa_context_success_cb_t, void*); -const char* (*pa_context_get_server_dylibloader_wrapper_pulse)(const pa_context*); -uint32_t (*pa_context_get_protocol_version_dylibloader_wrapper_pulse)(const pa_context*); -uint32_t (*pa_context_get_server_protocol_version_dylibloader_wrapper_pulse)(const pa_context*); -pa_operation* (*pa_context_proplist_update_dylibloader_wrapper_pulse)( pa_context*, pa_update_mode_t,const pa_proplist*, pa_context_success_cb_t, void*); +const char* (*pa_context_get_server_dylibloader_wrapper_pulse)( pa_context*); +uint32_t (*pa_context_get_protocol_version_dylibloader_wrapper_pulse)( pa_context*); +uint32_t (*pa_context_get_server_protocol_version_dylibloader_wrapper_pulse)( pa_context*); +pa_operation* (*pa_context_proplist_update_dylibloader_wrapper_pulse)( pa_context*, pa_update_mode_t, pa_proplist*, pa_context_success_cb_t, void*); pa_operation* (*pa_context_proplist_remove_dylibloader_wrapper_pulse)( pa_context*,const char* [], pa_context_success_cb_t, void*); -uint32_t (*pa_context_get_index_dylibloader_wrapper_pulse)(const pa_context*); -pa_time_event* (*pa_context_rttime_new_dylibloader_wrapper_pulse)(const pa_context*, pa_usec_t, pa_time_event_cb_t, void*); -void (*pa_context_rttime_restart_dylibloader_wrapper_pulse)(const pa_context*, pa_time_event*, pa_usec_t); -size_t (*pa_context_get_tile_size_dylibloader_wrapper_pulse)(const pa_context*,const pa_sample_spec*); +uint32_t (*pa_context_get_index_dylibloader_wrapper_pulse)( pa_context*); +pa_time_event* (*pa_context_rttime_new_dylibloader_wrapper_pulse)( pa_context*, pa_usec_t, pa_time_event_cb_t, void*); +void (*pa_context_rttime_restart_dylibloader_wrapper_pulse)( pa_context*, pa_time_event*, pa_usec_t); +size_t (*pa_context_get_tile_size_dylibloader_wrapper_pulse)( pa_context*,const pa_sample_spec*); int (*pa_context_load_cookie_from_file_dylibloader_wrapper_pulse)( pa_context*,const char*); int (*pa_cvolume_equal_dylibloader_wrapper_pulse)(const pa_cvolume*,const pa_cvolume*); pa_cvolume* (*pa_cvolume_init_dylibloader_wrapper_pulse)( pa_cvolume*); @@ -888,9 +872,9 @@ pa_cvolume* (*pa_cvolume_set_fade_dylibloader_wrapper_pulse)( pa_cvolume*,const float (*pa_cvolume_get_lfe_balance_dylibloader_wrapper_pulse)(const pa_cvolume*,const pa_channel_map*); pa_cvolume* (*pa_cvolume_set_lfe_balance_dylibloader_wrapper_pulse)( pa_cvolume*,const pa_channel_map*, float); pa_cvolume* (*pa_cvolume_scale_dylibloader_wrapper_pulse)( pa_cvolume*, pa_volume_t); -pa_cvolume* (*pa_cvolume_scale_mask_dylibloader_wrapper_pulse)( pa_cvolume*, pa_volume_t,const pa_channel_map*, pa_channel_position_mask_t); +pa_cvolume* (*pa_cvolume_scale_mask_dylibloader_wrapper_pulse)( pa_cvolume*, pa_volume_t, pa_channel_map*, pa_channel_position_mask_t); pa_cvolume* (*pa_cvolume_set_position_dylibloader_wrapper_pulse)( pa_cvolume*,const pa_channel_map*, pa_channel_position_t, pa_volume_t); -pa_volume_t (*pa_cvolume_get_position_dylibloader_wrapper_pulse)(const pa_cvolume*,const pa_channel_map*, pa_channel_position_t); +pa_volume_t (*pa_cvolume_get_position_dylibloader_wrapper_pulse)( pa_cvolume*,const pa_channel_map*, pa_channel_position_t); pa_cvolume* (*pa_cvolume_merge_dylibloader_wrapper_pulse)( pa_cvolume*,const pa_cvolume*,const pa_cvolume*); pa_cvolume* (*pa_cvolume_inc_clamp_dylibloader_wrapper_pulse)( pa_cvolume*, pa_volume_t, pa_volume_t); pa_cvolume* (*pa_cvolume_inc_dylibloader_wrapper_pulse)( pa_cvolume*, pa_volume_t); @@ -900,13 +884,13 @@ pa_stream* (*pa_stream_new_with_proplist_dylibloader_wrapper_pulse)( pa_context* pa_stream* (*pa_stream_new_extended_dylibloader_wrapper_pulse)( pa_context*,const char*, pa_format_info**, unsigned int, pa_proplist*); void (*pa_stream_unref_dylibloader_wrapper_pulse)( pa_stream*); pa_stream* (*pa_stream_ref_dylibloader_wrapper_pulse)( pa_stream*); -pa_stream_state_t (*pa_stream_get_state_dylibloader_wrapper_pulse)(const pa_stream*); -pa_context* (*pa_stream_get_context_dylibloader_wrapper_pulse)(const pa_stream*); -uint32_t (*pa_stream_get_index_dylibloader_wrapper_pulse)(const pa_stream*); -uint32_t (*pa_stream_get_device_index_dylibloader_wrapper_pulse)(const pa_stream*); -const char* (*pa_stream_get_device_name_dylibloader_wrapper_pulse)(const pa_stream*); -int (*pa_stream_is_suspended_dylibloader_wrapper_pulse)(const pa_stream*); -int (*pa_stream_is_corked_dylibloader_wrapper_pulse)(const pa_stream*); +pa_stream_state_t (*pa_stream_get_state_dylibloader_wrapper_pulse)( pa_stream*); +pa_context* (*pa_stream_get_context_dylibloader_wrapper_pulse)( pa_stream*); +uint32_t (*pa_stream_get_index_dylibloader_wrapper_pulse)( pa_stream*); +uint32_t (*pa_stream_get_device_index_dylibloader_wrapper_pulse)( pa_stream*); +const char* (*pa_stream_get_device_name_dylibloader_wrapper_pulse)( pa_stream*); +int (*pa_stream_is_suspended_dylibloader_wrapper_pulse)( pa_stream*); +int (*pa_stream_is_corked_dylibloader_wrapper_pulse)( pa_stream*); int (*pa_stream_connect_playback_dylibloader_wrapper_pulse)( pa_stream*,const char*,const pa_buffer_attr*, pa_stream_flags_t,const pa_cvolume*, pa_stream*); int (*pa_stream_connect_record_dylibloader_wrapper_pulse)( pa_stream*,const char*,const pa_buffer_attr*, pa_stream_flags_t); int (*pa_stream_disconnect_dylibloader_wrapper_pulse)( pa_stream*); @@ -916,15 +900,15 @@ int (*pa_stream_write_dylibloader_wrapper_pulse)( pa_stream*,const void*, size_t int (*pa_stream_write_ext_free_dylibloader_wrapper_pulse)( pa_stream*,const void*, size_t, pa_free_cb_t, void*, int64_t, pa_seek_mode_t); int (*pa_stream_peek_dylibloader_wrapper_pulse)( pa_stream*,const void**, size_t*); int (*pa_stream_drop_dylibloader_wrapper_pulse)( pa_stream*); -size_t (*pa_stream_writable_size_dylibloader_wrapper_pulse)(const pa_stream*); -size_t (*pa_stream_readable_size_dylibloader_wrapper_pulse)(const pa_stream*); +size_t (*pa_stream_writable_size_dylibloader_wrapper_pulse)( pa_stream*); +size_t (*pa_stream_readable_size_dylibloader_wrapper_pulse)( pa_stream*); pa_operation* (*pa_stream_drain_dylibloader_wrapper_pulse)( pa_stream*, pa_stream_success_cb_t, void*); pa_operation* (*pa_stream_update_timing_info_dylibloader_wrapper_pulse)( pa_stream*, pa_stream_success_cb_t, void*); void (*pa_stream_set_state_callback_dylibloader_wrapper_pulse)( pa_stream*, pa_stream_notify_cb_t, void*); void (*pa_stream_set_write_callback_dylibloader_wrapper_pulse)( pa_stream*, pa_stream_request_cb_t, void*); void (*pa_stream_set_read_callback_dylibloader_wrapper_pulse)( pa_stream*, pa_stream_request_cb_t, void*); void (*pa_stream_set_overflow_callback_dylibloader_wrapper_pulse)( pa_stream*, pa_stream_notify_cb_t, void*); -int64_t (*pa_stream_get_underflow_index_dylibloader_wrapper_pulse)(const pa_stream*); +int64_t (*pa_stream_get_underflow_index_dylibloader_wrapper_pulse)( pa_stream*); void (*pa_stream_set_underflow_callback_dylibloader_wrapper_pulse)( pa_stream*, pa_stream_notify_cb_t, void*); void (*pa_stream_set_started_callback_dylibloader_wrapper_pulse)( pa_stream*, pa_stream_notify_cb_t, void*); void (*pa_stream_set_latency_update_callback_dylibloader_wrapper_pulse)( pa_stream*, pa_stream_notify_cb_t, void*); @@ -942,14 +926,14 @@ int (*pa_stream_get_latency_dylibloader_wrapper_pulse)( pa_stream*, pa_usec_t*, const pa_timing_info* (*pa_stream_get_timing_info_dylibloader_wrapper_pulse)( pa_stream*); const pa_sample_spec* (*pa_stream_get_sample_spec_dylibloader_wrapper_pulse)( pa_stream*); const pa_channel_map* (*pa_stream_get_channel_map_dylibloader_wrapper_pulse)( pa_stream*); -const pa_format_info* (*pa_stream_get_format_info_dylibloader_wrapper_pulse)(const pa_stream*); +const pa_format_info* (*pa_stream_get_format_info_dylibloader_wrapper_pulse)( pa_stream*); const pa_buffer_attr* (*pa_stream_get_buffer_attr_dylibloader_wrapper_pulse)( pa_stream*); pa_operation* (*pa_stream_set_buffer_attr_dylibloader_wrapper_pulse)( pa_stream*,const pa_buffer_attr*, pa_stream_success_cb_t, void*); pa_operation* (*pa_stream_update_sample_rate_dylibloader_wrapper_pulse)( pa_stream*, uint32_t, pa_stream_success_cb_t, void*); pa_operation* (*pa_stream_proplist_update_dylibloader_wrapper_pulse)( pa_stream*, pa_update_mode_t, pa_proplist*, pa_stream_success_cb_t, void*); pa_operation* (*pa_stream_proplist_remove_dylibloader_wrapper_pulse)( pa_stream*,const char* [], pa_stream_success_cb_t, void*); int (*pa_stream_set_monitor_stream_dylibloader_wrapper_pulse)( pa_stream*, uint32_t); -uint32_t (*pa_stream_get_monitor_stream_dylibloader_wrapper_pulse)(const pa_stream*); +uint32_t (*pa_stream_get_monitor_stream_dylibloader_wrapper_pulse)( pa_stream*); pa_operation* (*pa_context_get_sink_info_by_name_dylibloader_wrapper_pulse)( pa_context*,const char*, pa_sink_info_cb_t, void*); pa_operation* (*pa_context_get_sink_info_by_index_dylibloader_wrapper_pulse)( pa_context*, uint32_t, pa_sink_info_cb_t, void*); pa_operation* (*pa_context_get_sink_info_list_dylibloader_wrapper_pulse)( pa_context*, pa_sink_info_cb_t, void*); @@ -1016,7 +1000,7 @@ int (*pa_stream_connect_upload_dylibloader_wrapper_pulse)( pa_stream*, size_t); int (*pa_stream_finish_upload_dylibloader_wrapper_pulse)( pa_stream*); pa_operation* (*pa_context_remove_sample_dylibloader_wrapper_pulse)( pa_context*,const char*, pa_context_success_cb_t, void*); pa_operation* (*pa_context_play_sample_dylibloader_wrapper_pulse)( pa_context*,const char*,const char*, pa_volume_t, pa_context_success_cb_t, void*); -pa_operation* (*pa_context_play_sample_with_proplist_dylibloader_wrapper_pulse)( pa_context*,const char*,const char*, pa_volume_t,const pa_proplist*, pa_context_play_sample_cb_t, void*); +pa_operation* (*pa_context_play_sample_with_proplist_dylibloader_wrapper_pulse)( pa_context*,const char*,const char*, pa_volume_t, pa_proplist*, pa_context_play_sample_cb_t, void*); const char* (*pa_strerror_dylibloader_wrapper_pulse)( int); void* (*pa_xmalloc_dylibloader_wrapper_pulse)( size_t); void* (*pa_xmalloc0_dylibloader_wrapper_pulse)( size_t); @@ -1040,17 +1024,16 @@ void (*pa_threaded_mainloop_unlock_dylibloader_wrapper_pulse)( pa_threaded_mainl void (*pa_threaded_mainloop_wait_dylibloader_wrapper_pulse)( pa_threaded_mainloop*); void (*pa_threaded_mainloop_signal_dylibloader_wrapper_pulse)( pa_threaded_mainloop*, int); void (*pa_threaded_mainloop_accept_dylibloader_wrapper_pulse)( pa_threaded_mainloop*); -int (*pa_threaded_mainloop_get_retval_dylibloader_wrapper_pulse)(const pa_threaded_mainloop*); +int (*pa_threaded_mainloop_get_retval_dylibloader_wrapper_pulse)( pa_threaded_mainloop*); pa_mainloop_api* (*pa_threaded_mainloop_get_api_dylibloader_wrapper_pulse)( pa_threaded_mainloop*); int (*pa_threaded_mainloop_in_thread_dylibloader_wrapper_pulse)( pa_threaded_mainloop*); void (*pa_threaded_mainloop_set_name_dylibloader_wrapper_pulse)( pa_threaded_mainloop*,const char*); -void (*pa_threaded_mainloop_once_unlocked_dylibloader_wrapper_pulse)( pa_threaded_mainloop*, void*, void*); pa_mainloop* (*pa_mainloop_new_dylibloader_wrapper_pulse)( void); void (*pa_mainloop_free_dylibloader_wrapper_pulse)( pa_mainloop*); int (*pa_mainloop_prepare_dylibloader_wrapper_pulse)( pa_mainloop*, int); int (*pa_mainloop_poll_dylibloader_wrapper_pulse)( pa_mainloop*); int (*pa_mainloop_dispatch_dylibloader_wrapper_pulse)( pa_mainloop*); -int (*pa_mainloop_get_retval_dylibloader_wrapper_pulse)(const pa_mainloop*); +int (*pa_mainloop_get_retval_dylibloader_wrapper_pulse)( pa_mainloop*); int (*pa_mainloop_iterate_dylibloader_wrapper_pulse)( pa_mainloop*, int, int*); int (*pa_mainloop_run_dylibloader_wrapper_pulse)( pa_mainloop*, int*); pa_mainloop_api* (*pa_mainloop_get_api_dylibloader_wrapper_pulse)( pa_mainloop*); @@ -1069,7 +1052,6 @@ char* (*pa_get_home_dir_dylibloader_wrapper_pulse)( char*, size_t); char* (*pa_get_binary_name_dylibloader_wrapper_pulse)( char*, size_t); char* (*pa_path_get_filename_dylibloader_wrapper_pulse)(const char*); int (*pa_msleep_dylibloader_wrapper_pulse)( unsigned long); -int (*pa_thread_make_realtime_dylibloader_wrapper_pulse)( int); struct timeval* (*pa_gettimeofday_dylibloader_wrapper_pulse)(struct timeval*); pa_usec_t (*pa_timeval_diff_dylibloader_wrapper_pulse)(struct timeval*,struct timeval*); int (*pa_timeval_cmp_dylibloader_wrapper_pulse)(struct timeval*,struct timeval*); @@ -1762,38 +1744,6 @@ int initialize_pulse(int verbose) { fprintf(stderr, "%s\n", error); } } -// pa_format_info_get_sample_format - *(void **) (&pa_format_info_get_sample_format_dylibloader_wrapper_pulse) = dlsym(handle, "pa_format_info_get_sample_format"); - if (verbose) { - error = dlerror(); - if (error != NULL) { - fprintf(stderr, "%s\n", error); - } - } -// pa_format_info_get_rate - *(void **) (&pa_format_info_get_rate_dylibloader_wrapper_pulse) = dlsym(handle, "pa_format_info_get_rate"); - if (verbose) { - error = dlerror(); - if (error != NULL) { - fprintf(stderr, "%s\n", error); - } - } -// pa_format_info_get_channels - *(void **) (&pa_format_info_get_channels_dylibloader_wrapper_pulse) = dlsym(handle, "pa_format_info_get_channels"); - if (verbose) { - error = dlerror(); - if (error != NULL) { - fprintf(stderr, "%s\n", error); - } - } -// pa_format_info_get_channel_map - *(void **) (&pa_format_info_get_channel_map_dylibloader_wrapper_pulse) = dlsym(handle, "pa_format_info_get_channel_map"); - if (verbose) { - error = dlerror(); - if (error != NULL) { - fprintf(stderr, "%s\n", error); - } - } // pa_format_info_set_prop_int *(void **) (&pa_format_info_set_prop_int_dylibloader_wrapper_pulse) = dlsym(handle, "pa_format_info_set_prop_int"); if (verbose) { @@ -3666,14 +3616,6 @@ int initialize_pulse(int verbose) { fprintf(stderr, "%s\n", error); } } -// pa_threaded_mainloop_once_unlocked - *(void **) (&pa_threaded_mainloop_once_unlocked_dylibloader_wrapper_pulse) = dlsym(handle, "pa_threaded_mainloop_once_unlocked"); - if (verbose) { - error = dlerror(); - if (error != NULL) { - fprintf(stderr, "%s\n", error); - } - } // pa_mainloop_new *(void **) (&pa_mainloop_new_dylibloader_wrapper_pulse) = dlsym(handle, "pa_mainloop_new"); if (verbose) { @@ -3866,14 +3808,6 @@ int initialize_pulse(int verbose) { fprintf(stderr, "%s\n", error); } } -// pa_thread_make_realtime - *(void **) (&pa_thread_make_realtime_dylibloader_wrapper_pulse) = dlsym(handle, "pa_thread_make_realtime"); - if (verbose) { - error = dlerror(); - if (error != NULL) { - fprintf(stderr, "%s\n", error); - } - } // pa_gettimeofday *(void **) (&pa_gettimeofday_dylibloader_wrapper_pulse) = dlsym(handle, "pa_gettimeofday"); if (verbose) { diff --git a/drivers/pulseaudio/pulse-so_wrap.h b/drivers/pulseaudio/pulse-so_wrap.h index 7f9a70fae1..b3baf4c81a 100644 --- a/drivers/pulseaudio/pulse-so_wrap.h +++ b/drivers/pulseaudio/pulse-so_wrap.h @@ -2,8 +2,8 @@ #define DYLIBLOAD_WRAPPER_PULSE // This file is generated. Do not edit! // see https://github.com/hpvb/dynload-wrapper for details -// generated by /home/hp/Projects/godot/pulse/generate-wrapper.py 0.3 on 2021-02-20 00:08:31 -// flags: /home/hp/Projects/godot/pulse/generate-wrapper.py --include /usr/include/pulse/pulseaudio.h --sys-include <pulse/pulseaudio.h> --soname libpulse.so.0 --omit-prefix _pa_ --init-name pulse --output-header pulse-so_wrap.h --output-implementation pulse-so_wrap.c +// generated by ../dynload-wrapper/generate-wrapper.py 0.3 on 2023-01-12 10:26:29 +// flags: ../dynload-wrapper/generate-wrapper.py --include ./thirdparty/linuxbsd_headers/pulse/pulseaudio.h --sys-include "thirdparty/linuxbsd_headers/pulse/pulseaudio.h" --soname libpulse.so.0 --omit-prefix _pa_ --init-name pulse --output-header ./drivers/pulseaudio/pulse-so_wrap.h --output-implementation ./drivers/pulseaudio/pulse-so_wrap.c // #include <stdint.h> @@ -91,10 +91,6 @@ #define pa_format_info_get_prop_string pa_format_info_get_prop_string_dylibloader_orig_pulse #define pa_format_info_get_prop_string_array pa_format_info_get_prop_string_array_dylibloader_orig_pulse #define pa_format_info_free_string_array pa_format_info_free_string_array_dylibloader_orig_pulse -#define pa_format_info_get_sample_format pa_format_info_get_sample_format_dylibloader_orig_pulse -#define pa_format_info_get_rate pa_format_info_get_rate_dylibloader_orig_pulse -#define pa_format_info_get_channels pa_format_info_get_channels_dylibloader_orig_pulse -#define pa_format_info_get_channel_map pa_format_info_get_channel_map_dylibloader_orig_pulse #define pa_format_info_set_prop_int pa_format_info_set_prop_int_dylibloader_orig_pulse #define pa_format_info_set_prop_int_array pa_format_info_set_prop_int_array_dylibloader_orig_pulse #define pa_format_info_set_prop_int_range pa_format_info_set_prop_int_range_dylibloader_orig_pulse @@ -329,7 +325,6 @@ #define pa_threaded_mainloop_get_api pa_threaded_mainloop_get_api_dylibloader_orig_pulse #define pa_threaded_mainloop_in_thread pa_threaded_mainloop_in_thread_dylibloader_orig_pulse #define pa_threaded_mainloop_set_name pa_threaded_mainloop_set_name_dylibloader_orig_pulse -#define pa_threaded_mainloop_once_unlocked pa_threaded_mainloop_once_unlocked_dylibloader_orig_pulse #define pa_mainloop_new pa_mainloop_new_dylibloader_orig_pulse #define pa_mainloop_free pa_mainloop_free_dylibloader_orig_pulse #define pa_mainloop_prepare pa_mainloop_prepare_dylibloader_orig_pulse @@ -354,7 +349,6 @@ #define pa_get_binary_name pa_get_binary_name_dylibloader_orig_pulse #define pa_path_get_filename pa_path_get_filename_dylibloader_orig_pulse #define pa_msleep pa_msleep_dylibloader_orig_pulse -#define pa_thread_make_realtime pa_thread_make_realtime_dylibloader_orig_pulse #define pa_gettimeofday pa_gettimeofday_dylibloader_orig_pulse #define pa_timeval_diff pa_timeval_diff_dylibloader_orig_pulse #define pa_timeval_cmp pa_timeval_cmp_dylibloader_orig_pulse @@ -364,7 +358,7 @@ #define pa_timeval_store pa_timeval_store_dylibloader_orig_pulse #define pa_timeval_load pa_timeval_load_dylibloader_orig_pulse #define pa_rtclock_now pa_rtclock_now_dylibloader_orig_pulse -#include <pulse/pulseaudio.h> +#include "thirdparty/linuxbsd_headers/pulse/pulseaudio.h" #undef pa_get_library_version #undef pa_bytes_per_second #undef pa_frame_size @@ -449,10 +443,6 @@ #undef pa_format_info_get_prop_string #undef pa_format_info_get_prop_string_array #undef pa_format_info_free_string_array -#undef pa_format_info_get_sample_format -#undef pa_format_info_get_rate -#undef pa_format_info_get_channels -#undef pa_format_info_get_channel_map #undef pa_format_info_set_prop_int #undef pa_format_info_set_prop_int_array #undef pa_format_info_set_prop_int_range @@ -687,7 +677,6 @@ #undef pa_threaded_mainloop_get_api #undef pa_threaded_mainloop_in_thread #undef pa_threaded_mainloop_set_name -#undef pa_threaded_mainloop_once_unlocked #undef pa_mainloop_new #undef pa_mainloop_free #undef pa_mainloop_prepare @@ -712,7 +701,6 @@ #undef pa_get_binary_name #undef pa_path_get_filename #undef pa_msleep -#undef pa_thread_make_realtime #undef pa_gettimeofday #undef pa_timeval_diff #undef pa_timeval_cmp @@ -809,10 +797,6 @@ extern "C" { #define pa_format_info_get_prop_string pa_format_info_get_prop_string_dylibloader_wrapper_pulse #define pa_format_info_get_prop_string_array pa_format_info_get_prop_string_array_dylibloader_wrapper_pulse #define pa_format_info_free_string_array pa_format_info_free_string_array_dylibloader_wrapper_pulse -#define pa_format_info_get_sample_format pa_format_info_get_sample_format_dylibloader_wrapper_pulse -#define pa_format_info_get_rate pa_format_info_get_rate_dylibloader_wrapper_pulse -#define pa_format_info_get_channels pa_format_info_get_channels_dylibloader_wrapper_pulse -#define pa_format_info_get_channel_map pa_format_info_get_channel_map_dylibloader_wrapper_pulse #define pa_format_info_set_prop_int pa_format_info_set_prop_int_dylibloader_wrapper_pulse #define pa_format_info_set_prop_int_array pa_format_info_set_prop_int_array_dylibloader_wrapper_pulse #define pa_format_info_set_prop_int_range pa_format_info_set_prop_int_range_dylibloader_wrapper_pulse @@ -1047,7 +1031,6 @@ extern "C" { #define pa_threaded_mainloop_get_api pa_threaded_mainloop_get_api_dylibloader_wrapper_pulse #define pa_threaded_mainloop_in_thread pa_threaded_mainloop_in_thread_dylibloader_wrapper_pulse #define pa_threaded_mainloop_set_name pa_threaded_mainloop_set_name_dylibloader_wrapper_pulse -#define pa_threaded_mainloop_once_unlocked pa_threaded_mainloop_once_unlocked_dylibloader_wrapper_pulse #define pa_mainloop_new pa_mainloop_new_dylibloader_wrapper_pulse #define pa_mainloop_free pa_mainloop_free_dylibloader_wrapper_pulse #define pa_mainloop_prepare pa_mainloop_prepare_dylibloader_wrapper_pulse @@ -1072,7 +1055,6 @@ extern "C" { #define pa_get_binary_name pa_get_binary_name_dylibloader_wrapper_pulse #define pa_path_get_filename pa_path_get_filename_dylibloader_wrapper_pulse #define pa_msleep pa_msleep_dylibloader_wrapper_pulse -#define pa_thread_make_realtime pa_thread_make_realtime_dylibloader_wrapper_pulse #define pa_gettimeofday pa_gettimeofday_dylibloader_wrapper_pulse #define pa_timeval_diff pa_timeval_diff_dylibloader_wrapper_pulse #define pa_timeval_cmp pa_timeval_cmp_dylibloader_wrapper_pulse @@ -1111,21 +1093,21 @@ extern int (*pa_proplist_sets_dylibloader_wrapper_pulse)( pa_proplist*,const cha extern int (*pa_proplist_setp_dylibloader_wrapper_pulse)( pa_proplist*,const char*); extern int (*pa_proplist_setf_dylibloader_wrapper_pulse)( pa_proplist*,const char*,const char*,...); extern int (*pa_proplist_set_dylibloader_wrapper_pulse)( pa_proplist*,const char*,const void*, size_t); -extern const char* (*pa_proplist_gets_dylibloader_wrapper_pulse)(const pa_proplist*,const char*); -extern int (*pa_proplist_get_dylibloader_wrapper_pulse)(const pa_proplist*,const char*,const void**, size_t*); +extern const char* (*pa_proplist_gets_dylibloader_wrapper_pulse)( pa_proplist*,const char*); +extern int (*pa_proplist_get_dylibloader_wrapper_pulse)( pa_proplist*,const char*,const void**, size_t*); extern void (*pa_proplist_update_dylibloader_wrapper_pulse)( pa_proplist*, pa_update_mode_t,const pa_proplist*); extern int (*pa_proplist_unset_dylibloader_wrapper_pulse)( pa_proplist*,const char*); extern int (*pa_proplist_unset_many_dylibloader_wrapper_pulse)( pa_proplist*,const char* []); -extern const char* (*pa_proplist_iterate_dylibloader_wrapper_pulse)(const pa_proplist*, void**); -extern char* (*pa_proplist_to_string_dylibloader_wrapper_pulse)(const pa_proplist*); -extern char* (*pa_proplist_to_string_sep_dylibloader_wrapper_pulse)(const pa_proplist*,const char*); +extern const char* (*pa_proplist_iterate_dylibloader_wrapper_pulse)( pa_proplist*, void**); +extern char* (*pa_proplist_to_string_dylibloader_wrapper_pulse)( pa_proplist*); +extern char* (*pa_proplist_to_string_sep_dylibloader_wrapper_pulse)( pa_proplist*,const char*); extern pa_proplist* (*pa_proplist_from_string_dylibloader_wrapper_pulse)(const char*); -extern int (*pa_proplist_contains_dylibloader_wrapper_pulse)(const pa_proplist*,const char*); +extern int (*pa_proplist_contains_dylibloader_wrapper_pulse)( pa_proplist*,const char*); extern void (*pa_proplist_clear_dylibloader_wrapper_pulse)( pa_proplist*); extern pa_proplist* (*pa_proplist_copy_dylibloader_wrapper_pulse)(const pa_proplist*); -extern unsigned (*pa_proplist_size_dylibloader_wrapper_pulse)(const pa_proplist*); -extern int (*pa_proplist_isempty_dylibloader_wrapper_pulse)(const pa_proplist*); -extern int (*pa_proplist_equal_dylibloader_wrapper_pulse)(const pa_proplist*,const pa_proplist*); +extern unsigned (*pa_proplist_size_dylibloader_wrapper_pulse)( pa_proplist*); +extern int (*pa_proplist_isempty_dylibloader_wrapper_pulse)( pa_proplist*); +extern int (*pa_proplist_equal_dylibloader_wrapper_pulse)( pa_proplist*, pa_proplist*); extern pa_channel_map* (*pa_channel_map_init_dylibloader_wrapper_pulse)( pa_channel_map*); extern pa_channel_map* (*pa_channel_map_init_mono_dylibloader_wrapper_pulse)( pa_channel_map*); extern pa_channel_map* (*pa_channel_map_init_stereo_dylibloader_wrapper_pulse)( pa_channel_map*); @@ -1166,10 +1148,6 @@ extern int (*pa_format_info_get_prop_int_array_dylibloader_wrapper_pulse)(const extern int (*pa_format_info_get_prop_string_dylibloader_wrapper_pulse)(const pa_format_info*,const char*, char**); extern int (*pa_format_info_get_prop_string_array_dylibloader_wrapper_pulse)(const pa_format_info*,const char*, char***, int*); extern void (*pa_format_info_free_string_array_dylibloader_wrapper_pulse)( char**, int); -extern int (*pa_format_info_get_sample_format_dylibloader_wrapper_pulse)(const pa_format_info*, pa_sample_format_t*); -extern int (*pa_format_info_get_rate_dylibloader_wrapper_pulse)(const pa_format_info*, uint32_t*); -extern int (*pa_format_info_get_channels_dylibloader_wrapper_pulse)(const pa_format_info*, uint8_t*); -extern int (*pa_format_info_get_channel_map_dylibloader_wrapper_pulse)(const pa_format_info*, pa_channel_map*); extern void (*pa_format_info_set_prop_int_dylibloader_wrapper_pulse)( pa_format_info*,const char*, int); extern void (*pa_format_info_set_prop_int_array_dylibloader_wrapper_pulse)( pa_format_info*,const char*,const int*, int); extern void (*pa_format_info_set_prop_int_range_dylibloader_wrapper_pulse)( pa_format_info*,const char*, int, int); @@ -1182,34 +1160,34 @@ extern void (*pa_format_info_set_channel_map_dylibloader_wrapper_pulse)( pa_form extern pa_operation* (*pa_operation_ref_dylibloader_wrapper_pulse)( pa_operation*); extern void (*pa_operation_unref_dylibloader_wrapper_pulse)( pa_operation*); extern void (*pa_operation_cancel_dylibloader_wrapper_pulse)( pa_operation*); -extern pa_operation_state_t (*pa_operation_get_state_dylibloader_wrapper_pulse)(const pa_operation*); +extern pa_operation_state_t (*pa_operation_get_state_dylibloader_wrapper_pulse)( pa_operation*); extern void (*pa_operation_set_state_callback_dylibloader_wrapper_pulse)( pa_operation*, pa_operation_notify_cb_t, void*); extern pa_context* (*pa_context_new_dylibloader_wrapper_pulse)( pa_mainloop_api*,const char*); -extern pa_context* (*pa_context_new_with_proplist_dylibloader_wrapper_pulse)( pa_mainloop_api*,const char*,const pa_proplist*); +extern pa_context* (*pa_context_new_with_proplist_dylibloader_wrapper_pulse)( pa_mainloop_api*,const char*, pa_proplist*); extern void (*pa_context_unref_dylibloader_wrapper_pulse)( pa_context*); extern pa_context* (*pa_context_ref_dylibloader_wrapper_pulse)( pa_context*); extern void (*pa_context_set_state_callback_dylibloader_wrapper_pulse)( pa_context*, pa_context_notify_cb_t, void*); extern void (*pa_context_set_event_callback_dylibloader_wrapper_pulse)( pa_context*, pa_context_event_cb_t, void*); -extern int (*pa_context_errno_dylibloader_wrapper_pulse)(const pa_context*); -extern int (*pa_context_is_pending_dylibloader_wrapper_pulse)(const pa_context*); -extern pa_context_state_t (*pa_context_get_state_dylibloader_wrapper_pulse)(const pa_context*); +extern int (*pa_context_errno_dylibloader_wrapper_pulse)( pa_context*); +extern int (*pa_context_is_pending_dylibloader_wrapper_pulse)( pa_context*); +extern pa_context_state_t (*pa_context_get_state_dylibloader_wrapper_pulse)( pa_context*); extern int (*pa_context_connect_dylibloader_wrapper_pulse)( pa_context*,const char*, pa_context_flags_t,const pa_spawn_api*); extern void (*pa_context_disconnect_dylibloader_wrapper_pulse)( pa_context*); extern pa_operation* (*pa_context_drain_dylibloader_wrapper_pulse)( pa_context*, pa_context_notify_cb_t, void*); extern pa_operation* (*pa_context_exit_daemon_dylibloader_wrapper_pulse)( pa_context*, pa_context_success_cb_t, void*); extern pa_operation* (*pa_context_set_default_sink_dylibloader_wrapper_pulse)( pa_context*,const char*, pa_context_success_cb_t, void*); extern pa_operation* (*pa_context_set_default_source_dylibloader_wrapper_pulse)( pa_context*,const char*, pa_context_success_cb_t, void*); -extern int (*pa_context_is_local_dylibloader_wrapper_pulse)(const pa_context*); +extern int (*pa_context_is_local_dylibloader_wrapper_pulse)( pa_context*); extern pa_operation* (*pa_context_set_name_dylibloader_wrapper_pulse)( pa_context*,const char*, pa_context_success_cb_t, void*); -extern const char* (*pa_context_get_server_dylibloader_wrapper_pulse)(const pa_context*); -extern uint32_t (*pa_context_get_protocol_version_dylibloader_wrapper_pulse)(const pa_context*); -extern uint32_t (*pa_context_get_server_protocol_version_dylibloader_wrapper_pulse)(const pa_context*); -extern pa_operation* (*pa_context_proplist_update_dylibloader_wrapper_pulse)( pa_context*, pa_update_mode_t,const pa_proplist*, pa_context_success_cb_t, void*); +extern const char* (*pa_context_get_server_dylibloader_wrapper_pulse)( pa_context*); +extern uint32_t (*pa_context_get_protocol_version_dylibloader_wrapper_pulse)( pa_context*); +extern uint32_t (*pa_context_get_server_protocol_version_dylibloader_wrapper_pulse)( pa_context*); +extern pa_operation* (*pa_context_proplist_update_dylibloader_wrapper_pulse)( pa_context*, pa_update_mode_t, pa_proplist*, pa_context_success_cb_t, void*); extern pa_operation* (*pa_context_proplist_remove_dylibloader_wrapper_pulse)( pa_context*,const char* [], pa_context_success_cb_t, void*); -extern uint32_t (*pa_context_get_index_dylibloader_wrapper_pulse)(const pa_context*); -extern pa_time_event* (*pa_context_rttime_new_dylibloader_wrapper_pulse)(const pa_context*, pa_usec_t, pa_time_event_cb_t, void*); -extern void (*pa_context_rttime_restart_dylibloader_wrapper_pulse)(const pa_context*, pa_time_event*, pa_usec_t); -extern size_t (*pa_context_get_tile_size_dylibloader_wrapper_pulse)(const pa_context*,const pa_sample_spec*); +extern uint32_t (*pa_context_get_index_dylibloader_wrapper_pulse)( pa_context*); +extern pa_time_event* (*pa_context_rttime_new_dylibloader_wrapper_pulse)( pa_context*, pa_usec_t, pa_time_event_cb_t, void*); +extern void (*pa_context_rttime_restart_dylibloader_wrapper_pulse)( pa_context*, pa_time_event*, pa_usec_t); +extern size_t (*pa_context_get_tile_size_dylibloader_wrapper_pulse)( pa_context*,const pa_sample_spec*); extern int (*pa_context_load_cookie_from_file_dylibloader_wrapper_pulse)( pa_context*,const char*); extern int (*pa_cvolume_equal_dylibloader_wrapper_pulse)(const pa_cvolume*,const pa_cvolume*); extern pa_cvolume* (*pa_cvolume_init_dylibloader_wrapper_pulse)( pa_cvolume*); @@ -1248,9 +1226,9 @@ extern pa_cvolume* (*pa_cvolume_set_fade_dylibloader_wrapper_pulse)( pa_cvolume* extern float (*pa_cvolume_get_lfe_balance_dylibloader_wrapper_pulse)(const pa_cvolume*,const pa_channel_map*); extern pa_cvolume* (*pa_cvolume_set_lfe_balance_dylibloader_wrapper_pulse)( pa_cvolume*,const pa_channel_map*, float); extern pa_cvolume* (*pa_cvolume_scale_dylibloader_wrapper_pulse)( pa_cvolume*, pa_volume_t); -extern pa_cvolume* (*pa_cvolume_scale_mask_dylibloader_wrapper_pulse)( pa_cvolume*, pa_volume_t,const pa_channel_map*, pa_channel_position_mask_t); +extern pa_cvolume* (*pa_cvolume_scale_mask_dylibloader_wrapper_pulse)( pa_cvolume*, pa_volume_t, pa_channel_map*, pa_channel_position_mask_t); extern pa_cvolume* (*pa_cvolume_set_position_dylibloader_wrapper_pulse)( pa_cvolume*,const pa_channel_map*, pa_channel_position_t, pa_volume_t); -extern pa_volume_t (*pa_cvolume_get_position_dylibloader_wrapper_pulse)(const pa_cvolume*,const pa_channel_map*, pa_channel_position_t); +extern pa_volume_t (*pa_cvolume_get_position_dylibloader_wrapper_pulse)( pa_cvolume*,const pa_channel_map*, pa_channel_position_t); extern pa_cvolume* (*pa_cvolume_merge_dylibloader_wrapper_pulse)( pa_cvolume*,const pa_cvolume*,const pa_cvolume*); extern pa_cvolume* (*pa_cvolume_inc_clamp_dylibloader_wrapper_pulse)( pa_cvolume*, pa_volume_t, pa_volume_t); extern pa_cvolume* (*pa_cvolume_inc_dylibloader_wrapper_pulse)( pa_cvolume*, pa_volume_t); @@ -1260,13 +1238,13 @@ extern pa_stream* (*pa_stream_new_with_proplist_dylibloader_wrapper_pulse)( pa_c extern pa_stream* (*pa_stream_new_extended_dylibloader_wrapper_pulse)( pa_context*,const char*, pa_format_info**, unsigned int, pa_proplist*); extern void (*pa_stream_unref_dylibloader_wrapper_pulse)( pa_stream*); extern pa_stream* (*pa_stream_ref_dylibloader_wrapper_pulse)( pa_stream*); -extern pa_stream_state_t (*pa_stream_get_state_dylibloader_wrapper_pulse)(const pa_stream*); -extern pa_context* (*pa_stream_get_context_dylibloader_wrapper_pulse)(const pa_stream*); -extern uint32_t (*pa_stream_get_index_dylibloader_wrapper_pulse)(const pa_stream*); -extern uint32_t (*pa_stream_get_device_index_dylibloader_wrapper_pulse)(const pa_stream*); -extern const char* (*pa_stream_get_device_name_dylibloader_wrapper_pulse)(const pa_stream*); -extern int (*pa_stream_is_suspended_dylibloader_wrapper_pulse)(const pa_stream*); -extern int (*pa_stream_is_corked_dylibloader_wrapper_pulse)(const pa_stream*); +extern pa_stream_state_t (*pa_stream_get_state_dylibloader_wrapper_pulse)( pa_stream*); +extern pa_context* (*pa_stream_get_context_dylibloader_wrapper_pulse)( pa_stream*); +extern uint32_t (*pa_stream_get_index_dylibloader_wrapper_pulse)( pa_stream*); +extern uint32_t (*pa_stream_get_device_index_dylibloader_wrapper_pulse)( pa_stream*); +extern const char* (*pa_stream_get_device_name_dylibloader_wrapper_pulse)( pa_stream*); +extern int (*pa_stream_is_suspended_dylibloader_wrapper_pulse)( pa_stream*); +extern int (*pa_stream_is_corked_dylibloader_wrapper_pulse)( pa_stream*); extern int (*pa_stream_connect_playback_dylibloader_wrapper_pulse)( pa_stream*,const char*,const pa_buffer_attr*, pa_stream_flags_t,const pa_cvolume*, pa_stream*); extern int (*pa_stream_connect_record_dylibloader_wrapper_pulse)( pa_stream*,const char*,const pa_buffer_attr*, pa_stream_flags_t); extern int (*pa_stream_disconnect_dylibloader_wrapper_pulse)( pa_stream*); @@ -1276,15 +1254,15 @@ extern int (*pa_stream_write_dylibloader_wrapper_pulse)( pa_stream*,const void*, extern int (*pa_stream_write_ext_free_dylibloader_wrapper_pulse)( pa_stream*,const void*, size_t, pa_free_cb_t, void*, int64_t, pa_seek_mode_t); extern int (*pa_stream_peek_dylibloader_wrapper_pulse)( pa_stream*,const void**, size_t*); extern int (*pa_stream_drop_dylibloader_wrapper_pulse)( pa_stream*); -extern size_t (*pa_stream_writable_size_dylibloader_wrapper_pulse)(const pa_stream*); -extern size_t (*pa_stream_readable_size_dylibloader_wrapper_pulse)(const pa_stream*); +extern size_t (*pa_stream_writable_size_dylibloader_wrapper_pulse)( pa_stream*); +extern size_t (*pa_stream_readable_size_dylibloader_wrapper_pulse)( pa_stream*); extern pa_operation* (*pa_stream_drain_dylibloader_wrapper_pulse)( pa_stream*, pa_stream_success_cb_t, void*); extern pa_operation* (*pa_stream_update_timing_info_dylibloader_wrapper_pulse)( pa_stream*, pa_stream_success_cb_t, void*); extern void (*pa_stream_set_state_callback_dylibloader_wrapper_pulse)( pa_stream*, pa_stream_notify_cb_t, void*); extern void (*pa_stream_set_write_callback_dylibloader_wrapper_pulse)( pa_stream*, pa_stream_request_cb_t, void*); extern void (*pa_stream_set_read_callback_dylibloader_wrapper_pulse)( pa_stream*, pa_stream_request_cb_t, void*); extern void (*pa_stream_set_overflow_callback_dylibloader_wrapper_pulse)( pa_stream*, pa_stream_notify_cb_t, void*); -extern int64_t (*pa_stream_get_underflow_index_dylibloader_wrapper_pulse)(const pa_stream*); +extern int64_t (*pa_stream_get_underflow_index_dylibloader_wrapper_pulse)( pa_stream*); extern void (*pa_stream_set_underflow_callback_dylibloader_wrapper_pulse)( pa_stream*, pa_stream_notify_cb_t, void*); extern void (*pa_stream_set_started_callback_dylibloader_wrapper_pulse)( pa_stream*, pa_stream_notify_cb_t, void*); extern void (*pa_stream_set_latency_update_callback_dylibloader_wrapper_pulse)( pa_stream*, pa_stream_notify_cb_t, void*); @@ -1302,14 +1280,14 @@ extern int (*pa_stream_get_latency_dylibloader_wrapper_pulse)( pa_stream*, pa_us extern const pa_timing_info* (*pa_stream_get_timing_info_dylibloader_wrapper_pulse)( pa_stream*); extern const pa_sample_spec* (*pa_stream_get_sample_spec_dylibloader_wrapper_pulse)( pa_stream*); extern const pa_channel_map* (*pa_stream_get_channel_map_dylibloader_wrapper_pulse)( pa_stream*); -extern const pa_format_info* (*pa_stream_get_format_info_dylibloader_wrapper_pulse)(const pa_stream*); +extern const pa_format_info* (*pa_stream_get_format_info_dylibloader_wrapper_pulse)( pa_stream*); extern const pa_buffer_attr* (*pa_stream_get_buffer_attr_dylibloader_wrapper_pulse)( pa_stream*); extern pa_operation* (*pa_stream_set_buffer_attr_dylibloader_wrapper_pulse)( pa_stream*,const pa_buffer_attr*, pa_stream_success_cb_t, void*); extern pa_operation* (*pa_stream_update_sample_rate_dylibloader_wrapper_pulse)( pa_stream*, uint32_t, pa_stream_success_cb_t, void*); extern pa_operation* (*pa_stream_proplist_update_dylibloader_wrapper_pulse)( pa_stream*, pa_update_mode_t, pa_proplist*, pa_stream_success_cb_t, void*); extern pa_operation* (*pa_stream_proplist_remove_dylibloader_wrapper_pulse)( pa_stream*,const char* [], pa_stream_success_cb_t, void*); extern int (*pa_stream_set_monitor_stream_dylibloader_wrapper_pulse)( pa_stream*, uint32_t); -extern uint32_t (*pa_stream_get_monitor_stream_dylibloader_wrapper_pulse)(const pa_stream*); +extern uint32_t (*pa_stream_get_monitor_stream_dylibloader_wrapper_pulse)( pa_stream*); extern pa_operation* (*pa_context_get_sink_info_by_name_dylibloader_wrapper_pulse)( pa_context*,const char*, pa_sink_info_cb_t, void*); extern pa_operation* (*pa_context_get_sink_info_by_index_dylibloader_wrapper_pulse)( pa_context*, uint32_t, pa_sink_info_cb_t, void*); extern pa_operation* (*pa_context_get_sink_info_list_dylibloader_wrapper_pulse)( pa_context*, pa_sink_info_cb_t, void*); @@ -1376,7 +1354,7 @@ extern int (*pa_stream_connect_upload_dylibloader_wrapper_pulse)( pa_stream*, si extern int (*pa_stream_finish_upload_dylibloader_wrapper_pulse)( pa_stream*); extern pa_operation* (*pa_context_remove_sample_dylibloader_wrapper_pulse)( pa_context*,const char*, pa_context_success_cb_t, void*); extern pa_operation* (*pa_context_play_sample_dylibloader_wrapper_pulse)( pa_context*,const char*,const char*, pa_volume_t, pa_context_success_cb_t, void*); -extern pa_operation* (*pa_context_play_sample_with_proplist_dylibloader_wrapper_pulse)( pa_context*,const char*,const char*, pa_volume_t,const pa_proplist*, pa_context_play_sample_cb_t, void*); +extern pa_operation* (*pa_context_play_sample_with_proplist_dylibloader_wrapper_pulse)( pa_context*,const char*,const char*, pa_volume_t, pa_proplist*, pa_context_play_sample_cb_t, void*); extern const char* (*pa_strerror_dylibloader_wrapper_pulse)( int); extern void* (*pa_xmalloc_dylibloader_wrapper_pulse)( size_t); extern void* (*pa_xmalloc0_dylibloader_wrapper_pulse)( size_t); @@ -1400,17 +1378,16 @@ extern void (*pa_threaded_mainloop_unlock_dylibloader_wrapper_pulse)( pa_threade extern void (*pa_threaded_mainloop_wait_dylibloader_wrapper_pulse)( pa_threaded_mainloop*); extern void (*pa_threaded_mainloop_signal_dylibloader_wrapper_pulse)( pa_threaded_mainloop*, int); extern void (*pa_threaded_mainloop_accept_dylibloader_wrapper_pulse)( pa_threaded_mainloop*); -extern int (*pa_threaded_mainloop_get_retval_dylibloader_wrapper_pulse)(const pa_threaded_mainloop*); +extern int (*pa_threaded_mainloop_get_retval_dylibloader_wrapper_pulse)( pa_threaded_mainloop*); extern pa_mainloop_api* (*pa_threaded_mainloop_get_api_dylibloader_wrapper_pulse)( pa_threaded_mainloop*); extern int (*pa_threaded_mainloop_in_thread_dylibloader_wrapper_pulse)( pa_threaded_mainloop*); extern void (*pa_threaded_mainloop_set_name_dylibloader_wrapper_pulse)( pa_threaded_mainloop*,const char*); -extern void (*pa_threaded_mainloop_once_unlocked_dylibloader_wrapper_pulse)( pa_threaded_mainloop*, void*, void*); extern pa_mainloop* (*pa_mainloop_new_dylibloader_wrapper_pulse)( void); extern void (*pa_mainloop_free_dylibloader_wrapper_pulse)( pa_mainloop*); extern int (*pa_mainloop_prepare_dylibloader_wrapper_pulse)( pa_mainloop*, int); extern int (*pa_mainloop_poll_dylibloader_wrapper_pulse)( pa_mainloop*); extern int (*pa_mainloop_dispatch_dylibloader_wrapper_pulse)( pa_mainloop*); -extern int (*pa_mainloop_get_retval_dylibloader_wrapper_pulse)(const pa_mainloop*); +extern int (*pa_mainloop_get_retval_dylibloader_wrapper_pulse)( pa_mainloop*); extern int (*pa_mainloop_iterate_dylibloader_wrapper_pulse)( pa_mainloop*, int, int*); extern int (*pa_mainloop_run_dylibloader_wrapper_pulse)( pa_mainloop*, int*); extern pa_mainloop_api* (*pa_mainloop_get_api_dylibloader_wrapper_pulse)( pa_mainloop*); @@ -1429,7 +1406,6 @@ extern char* (*pa_get_home_dir_dylibloader_wrapper_pulse)( char*, size_t); extern char* (*pa_get_binary_name_dylibloader_wrapper_pulse)( char*, size_t); extern char* (*pa_path_get_filename_dylibloader_wrapper_pulse)(const char*); extern int (*pa_msleep_dylibloader_wrapper_pulse)( unsigned long); -extern int (*pa_thread_make_realtime_dylibloader_wrapper_pulse)( int); extern struct timeval* (*pa_gettimeofday_dylibloader_wrapper_pulse)(struct timeval*); extern pa_usec_t (*pa_timeval_diff_dylibloader_wrapper_pulse)(struct timeval*,struct timeval*); extern int (*pa_timeval_cmp_dylibloader_wrapper_pulse)(struct timeval*,struct timeval*); diff --git a/drivers/unix/dir_access_unix.cpp b/drivers/unix/dir_access_unix.cpp index 557060c907..a162f46103 100644 --- a/drivers/unix/dir_access_unix.cpp +++ b/drivers/unix/dir_access_unix.cpp @@ -189,7 +189,7 @@ void DirAccessUnix::list_dir_end() { _cisdir = false; } -#if defined(HAVE_MNTENT) && defined(X11_ENABLED) +#if defined(HAVE_MNTENT) && defined(LINUXBSD_ENABLED) static bool _filter_drive(struct mntent *mnt) { // Ignore devices that don't point to /dev if (strncmp(mnt->mnt_fsname, "/dev", 4) != 0) { @@ -213,7 +213,7 @@ static void _get_drives(List<String> *list) { // Add root. list->push_back("/"); -#if defined(HAVE_MNTENT) && defined(X11_ENABLED) +#if defined(HAVE_MNTENT) && defined(LINUXBSD_ENABLED) // Check /etc/mtab for the list of mounted partitions. FILE *mtab = setmntent("/etc/mtab", "r"); if (mtab) { diff --git a/drivers/unix/os_unix.cpp b/drivers/unix/os_unix.cpp index c37b3d9c87..178f01b185 100644 --- a/drivers/unix/os_unix.cpp +++ b/drivers/unix/os_unix.cpp @@ -411,10 +411,6 @@ bool OS_Unix::is_process_running(const ProcessID &p_pid) const { return true; } -bool OS_Unix::has_environment(const String &p_var) const { - return getenv(p_var.utf8().get_data()) != nullptr; -} - String OS_Unix::get_locale() const { if (!has_environment("LANG")) { return "en"; @@ -487,6 +483,10 @@ Error OS_Unix::set_cwd(const String &p_cwd) { return OK; } +bool OS_Unix::has_environment(const String &p_var) const { + return getenv(p_var.utf8().get_data()) != nullptr; +} + String OS_Unix::get_environment(const String &p_var) const { if (getenv(p_var.utf8().get_data())) { return getenv(p_var.utf8().get_data()); @@ -494,8 +494,15 @@ String OS_Unix::get_environment(const String &p_var) const { return ""; } -bool OS_Unix::set_environment(const String &p_var, const String &p_value) const { - return setenv(p_var.utf8().get_data(), p_value.utf8().get_data(), /* overwrite: */ true) == 0; +void OS_Unix::set_environment(const String &p_var, const String &p_value) const { + ERR_FAIL_COND_MSG(p_var.is_empty() || p_var.contains("="), vformat("Invalid environment variable name '%s', cannot be empty or include '='.", p_var)); + int err = setenv(p_var.utf8().get_data(), p_value.utf8().get_data(), /* overwrite: */ 1); + ERR_FAIL_COND_MSG(err != 0, vformat("Failed setting environment variable '%s', the system is out of memory.", p_var)); +} + +void OS_Unix::unset_environment(const String &p_var) const { + ERR_FAIL_COND_MSG(p_var.is_empty() || p_var.contains("="), vformat("Invalid environment variable name '%s', cannot be empty or include '='.", p_var)); + unsetenv(p_var.utf8().get_data()); } String OS_Unix::get_user_data_dir() const { diff --git a/drivers/unix/os_unix.h b/drivers/unix/os_unix.h index 416311307c..03429622ae 100644 --- a/drivers/unix/os_unix.h +++ b/drivers/unix/os_unix.h @@ -81,7 +81,9 @@ public: virtual bool has_environment(const String &p_var) const override; virtual String get_environment(const String &p_var) const override; - virtual bool set_environment(const String &p_var, const String &p_value) const override; + virtual void set_environment(const String &p_var, const String &p_value) const override; + virtual void unset_environment(const String &p_var) const override; + virtual String get_locale() const override; virtual void initialize_debugging() override; diff --git a/drivers/vulkan/rendering_device_vulkan.cpp b/drivers/vulkan/rendering_device_vulkan.cpp index 6c833c8a26..42146cd7ec 100644 --- a/drivers/vulkan/rendering_device_vulkan.cpp +++ b/drivers/vulkan/rendering_device_vulkan.cpp @@ -1666,34 +1666,27 @@ RID RenderingDeviceVulkan::texture_create(const TextureFormat &p_format, const T image_create_info.pNext = nullptr; image_create_info.flags = 0; - // TODO: Check for support via RenderingDevice to enable on mobile when possible. - -#ifndef ANDROID_ENABLED - - // vkCreateImage fails with format list on Android (VK_ERROR_OUT_OF_HOST_MEMORY) VkImageFormatListCreateInfoKHR format_list_create_info; // Keep out of the if, needed for creation. Vector<VkFormat> allowed_formats; // Keep out of the if, needed for creation. -#endif if (p_format.shareable_formats.size()) { image_create_info.flags |= VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT; -#ifndef ANDROID_ENABLED - - for (int i = 0; i < p_format.shareable_formats.size(); i++) { - allowed_formats.push_back(vulkan_formats[p_format.shareable_formats[i]]); - } + if (context->is_device_extension_enabled(VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME)) { + for (int i = 0; i < p_format.shareable_formats.size(); i++) { + allowed_formats.push_back(vulkan_formats[p_format.shareable_formats[i]]); + } - format_list_create_info.sType = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR; - format_list_create_info.pNext = nullptr; - format_list_create_info.viewFormatCount = allowed_formats.size(); - format_list_create_info.pViewFormats = allowed_formats.ptr(); - image_create_info.pNext = &format_list_create_info; + format_list_create_info.sType = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR; + format_list_create_info.pNext = nullptr; + format_list_create_info.viewFormatCount = allowed_formats.size(); + format_list_create_info.pViewFormats = allowed_formats.ptr(); + image_create_info.pNext = &format_list_create_info; - ERR_FAIL_COND_V_MSG(p_format.shareable_formats.find(p_format.format) == -1, RID(), - "If supplied a list of shareable formats, the current format must be present in the list"); - ERR_FAIL_COND_V_MSG(p_view.format_override != DATA_FORMAT_MAX && p_format.shareable_formats.find(p_view.format_override) == -1, RID(), - "If supplied a list of shareable formats, the current view format override must be present in the list"); -#endif + ERR_FAIL_COND_V_MSG(p_format.shareable_formats.find(p_format.format) == -1, RID(), + "If supplied a list of shareable formats, the current format must be present in the list"); + ERR_FAIL_COND_V_MSG(p_view.format_override != DATA_FORMAT_MAX && p_format.shareable_formats.find(p_view.format_override) == -1, RID(), + "If supplied a list of shareable formats, the current view format override must be present in the list"); + } } if (p_format.texture_type == TEXTURE_TYPE_CUBE || p_format.texture_type == TEXTURE_TYPE_CUBE_ARRAY) { @@ -2096,49 +2089,54 @@ RID RenderingDeviceVulkan::texture_create_shared(const TextureView &p_view, RID } VkImageViewUsageCreateInfo usage_info; - usage_info.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO; - usage_info.pNext = nullptr; - if (p_view.format_override != DATA_FORMAT_MAX) { - // Need to validate usage with vulkan. + if (context->is_device_extension_enabled(VK_KHR_MAINTENANCE_2_EXTENSION_NAME)) { + // May need to make VK_KHR_maintenance2 manditory and thus has Vulkan 1.1 be our minimum supported version + // if we require setting this information. Vulkan 1.0 may simply not care.. - usage_info.usage = 0; + usage_info.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO; + usage_info.pNext = nullptr; + if (p_view.format_override != DATA_FORMAT_MAX) { + // Need to validate usage with vulkan. - if (texture.usage_flags & TEXTURE_USAGE_SAMPLING_BIT) { - usage_info.usage |= VK_IMAGE_USAGE_SAMPLED_BIT; - } + usage_info.usage = 0; - if (texture.usage_flags & TEXTURE_USAGE_STORAGE_BIT) { - if (texture_is_format_supported_for_usage(p_view.format_override, TEXTURE_USAGE_STORAGE_BIT)) { - usage_info.usage |= VK_IMAGE_USAGE_STORAGE_BIT; + if (texture.usage_flags & TEXTURE_USAGE_SAMPLING_BIT) { + usage_info.usage |= VK_IMAGE_USAGE_SAMPLED_BIT; } - } - if (texture.usage_flags & TEXTURE_USAGE_COLOR_ATTACHMENT_BIT) { - if (texture_is_format_supported_for_usage(p_view.format_override, TEXTURE_USAGE_COLOR_ATTACHMENT_BIT)) { - usage_info.usage |= VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; + if (texture.usage_flags & TEXTURE_USAGE_STORAGE_BIT) { + if (texture_is_format_supported_for_usage(p_view.format_override, TEXTURE_USAGE_STORAGE_BIT)) { + usage_info.usage |= VK_IMAGE_USAGE_STORAGE_BIT; + } } - } - if (texture.usage_flags & TEXTURE_USAGE_INPUT_ATTACHMENT_BIT) { - usage_info.usage |= VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT; - } + if (texture.usage_flags & TEXTURE_USAGE_COLOR_ATTACHMENT_BIT) { + if (texture_is_format_supported_for_usage(p_view.format_override, TEXTURE_USAGE_COLOR_ATTACHMENT_BIT)) { + usage_info.usage |= VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; + } + } - if (texture.usage_flags & TEXTURE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT) { - usage_info.usage |= VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT; - } + if (texture.usage_flags & TEXTURE_USAGE_INPUT_ATTACHMENT_BIT) { + usage_info.usage |= VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT; + } - if (texture.usage_flags & TEXTURE_USAGE_CAN_UPDATE_BIT) { - usage_info.usage |= VK_IMAGE_USAGE_TRANSFER_DST_BIT; - } - if (texture.usage_flags & TEXTURE_USAGE_CAN_COPY_FROM_BIT) { - usage_info.usage |= VK_IMAGE_USAGE_TRANSFER_SRC_BIT; - } + if (texture.usage_flags & TEXTURE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT) { + usage_info.usage |= VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT; + } - if (texture.usage_flags & TEXTURE_USAGE_CAN_COPY_TO_BIT) { - usage_info.usage |= VK_IMAGE_USAGE_TRANSFER_DST_BIT; - } + if (texture.usage_flags & TEXTURE_USAGE_CAN_UPDATE_BIT) { + usage_info.usage |= VK_IMAGE_USAGE_TRANSFER_DST_BIT; + } + if (texture.usage_flags & TEXTURE_USAGE_CAN_COPY_FROM_BIT) { + usage_info.usage |= VK_IMAGE_USAGE_TRANSFER_SRC_BIT; + } - image_view_create_info.pNext = &usage_info; + if (texture.usage_flags & TEXTURE_USAGE_CAN_COPY_TO_BIT) { + usage_info.usage |= VK_IMAGE_USAGE_TRANSFER_DST_BIT; + } + + image_view_create_info.pNext = &usage_info; + } } VkResult err = vkCreateImageView(device, &image_view_create_info, nullptr, &texture.view); @@ -4278,7 +4276,7 @@ RID RenderingDeviceVulkan::sampler_create(const SamplerState &p_state) { sampler_create_info.addressModeW = address_modes[p_state.repeat_w]; sampler_create_info.mipLodBias = p_state.lod_bias; - sampler_create_info.anisotropyEnable = p_state.use_anisotropy; + sampler_create_info.anisotropyEnable = p_state.use_anisotropy && context->get_physical_device_features().samplerAnisotropy; sampler_create_info.maxAnisotropy = p_state.anisotropy_max; sampler_create_info.compareEnable = p_state.enable_compare; @@ -9368,11 +9366,11 @@ bool RenderingDeviceVulkan::has_feature(const Features p_feature) const { return multiview_capabilies.is_supported && multiview_capabilies.max_view_count > 1; } break; case SUPPORTS_FSR_HALF_FLOAT: { - return context->get_shader_capabilities().shader_float16_is_supported && context->get_storage_buffer_capabilities().storage_buffer_16_bit_access_is_supported; + return context->get_shader_capabilities().shader_float16_is_supported && context->get_physical_device_features().shaderInt16 && context->get_storage_buffer_capabilities().storage_buffer_16_bit_access_is_supported; } break; case SUPPORTS_ATTACHMENT_VRS: { VulkanContext::VRSCapabilities vrs_capabilities = context->get_vrs_capabilities(); - return vrs_capabilities.attachment_vrs_supported; + return vrs_capabilities.attachment_vrs_supported && context->get_physical_device_features().shaderStorageImageExtendedFormats; } break; default: { return false; diff --git a/drivers/vulkan/vulkan_context.cpp b/drivers/vulkan/vulkan_context.cpp index 0bccefede8..d1391cb53e 100644 --- a/drivers/vulkan/vulkan_context.cpp +++ b/drivers/vulkan/vulkan_context.cpp @@ -353,11 +353,11 @@ Error VulkanContext::_get_preferred_validation_layers(uint32_t *count, const cha ERR_FAIL_V(ERR_CANT_CREATE); } - for (uint32_t i = 0; i < instance_validation_layers_alt.size(); i++) { - if (_check_layers(instance_validation_layers_alt[i].size(), instance_validation_layers_alt[i].ptr(), instance_layer_count, instance_layers)) { - *count = instance_validation_layers_alt[i].size(); + for (const LocalVector<const char *> &layer : instance_validation_layers_alt) { + if (_check_layers(layer.size(), layer.ptr(), instance_layer_count, instance_layers)) { + *count = layer.size(); if (names != nullptr) { - *names = instance_validation_layers_alt[i].ptr(); + *names = layer.ptr(); } break; } @@ -413,6 +413,7 @@ Error VulkanContext::_initialize_instance_extensions() { register_requested_instance_extension(VK_EXT_DEBUG_REPORT_EXTENSION_NAME, false); } + // This extension allows us to use the properties2 features to query additional device capabilities register_requested_instance_extension(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, false); // Only enable debug utils in verbose mode or DEV_ENABLED. @@ -493,7 +494,10 @@ Error VulkanContext::_initialize_device_extensions() { register_requested_device_extension(VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME, false); register_requested_device_extension(VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME, false); register_requested_device_extension(VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME, false); + register_requested_device_extension(VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME, false); register_requested_device_extension(VK_KHR_16BIT_STORAGE_EXTENSION_NAME, false); + register_requested_device_extension(VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME, false); + register_requested_device_extension(VK_KHR_MAINTENANCE_2_EXTENSION_NAME, false); // TODO consider the following extensions: // - VK_KHR_spirv_1_4 @@ -744,48 +748,90 @@ Error VulkanContext::_check_capabilities() { } if (vkGetPhysicalDeviceFeatures2_func != nullptr) { // Check our extended features. - VkPhysicalDeviceFragmentShadingRateFeaturesKHR vrs_features = { - /*sType*/ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR, - /*pNext*/ nullptr, - /*pipelineFragmentShadingRate*/ false, - /*primitiveFragmentShadingRate*/ false, - /*attachmentFragmentShadingRate*/ false, - }; + void *next = nullptr; - VkPhysicalDeviceShaderFloat16Int8FeaturesKHR shader_features = { - /*sType*/ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR, - /*pNext*/ &vrs_features, - /*shaderFloat16*/ false, - /*shaderInt8*/ false, - }; + // We must check that the relative extension is present before assuming a + // feature as enabled. + // See also: https://github.com/godotengine/godot/issues/65409 - VkPhysicalDevice16BitStorageFeaturesKHR storage_feature = { - /*sType*/ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR, - /*pNext*/ &shader_features, - /*storageBuffer16BitAccess*/ false, - /*uniformAndStorageBuffer16BitAccess*/ false, - /*storagePushConstant16*/ false, - /*storageInputOutput16*/ false, - }; + VkPhysicalDeviceVulkan12Features device_features_vk12 = {}; + VkPhysicalDeviceShaderFloat16Int8FeaturesKHR shader_features = {}; + VkPhysicalDeviceFragmentShadingRateFeaturesKHR vrs_features = {}; + VkPhysicalDevice16BitStorageFeaturesKHR storage_feature = {}; + VkPhysicalDeviceMultiviewFeatures multiview_features = {}; - VkPhysicalDeviceMultiviewFeatures multiview_features = { - /*sType*/ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES, - /*pNext*/ &storage_feature, - /*multiview*/ false, - /*multiviewGeometryShader*/ false, - /*multiviewTessellationShader*/ false, - }; + if (device_api_version >= VK_API_VERSION_1_2) { + device_features_vk12.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES; + device_features_vk12.pNext = next; + next = &device_features_vk12; + } else { + if (is_device_extension_enabled(VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME)) { + shader_features = { + /*sType*/ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR, + /*pNext*/ next, + /*shaderFloat16*/ false, + /*shaderInt8*/ false, + }; + next = &shader_features; + } + } + + if (is_device_extension_enabled(VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME)) { + vrs_features = { + /*sType*/ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR, + /*pNext*/ next, + /*pipelineFragmentShadingRate*/ false, + /*primitiveFragmentShadingRate*/ false, + /*attachmentFragmentShadingRate*/ false, + }; + next = &vrs_features; + } + + if (is_device_extension_enabled(VK_KHR_16BIT_STORAGE_EXTENSION_NAME)) { + storage_feature = { + /*sType*/ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR, + /*pNext*/ next, + /*storageBuffer16BitAccess*/ false, + /*uniformAndStorageBuffer16BitAccess*/ false, + /*storagePushConstant16*/ false, + /*storageInputOutput16*/ false, + }; + next = &storage_feature; + } + + if (is_device_extension_enabled(VK_KHR_MULTIVIEW_EXTENSION_NAME)) { + multiview_features = { + /*sType*/ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES, + /*pNext*/ next, + /*multiview*/ false, + /*multiviewGeometryShader*/ false, + /*multiviewTessellationShader*/ false, + }; + next = &multiview_features; + } VkPhysicalDeviceFeatures2 device_features; device_features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2; - device_features.pNext = &multiview_features; + device_features.pNext = next; vkGetPhysicalDeviceFeatures2_func(gpu, &device_features); - // We must check that the relative extension is present before assuming a - // feature as enabled. Actually, according to the spec we shouldn't add the - // structs in pNext at all, but this works fine. - // See also: https://github.com/godotengine/godot/issues/65409 + if (device_api_version >= VK_API_VERSION_1_2) { +#ifdef MACOS_ENABLED + ERR_FAIL_COND_V_MSG(!device_features_vk12.shaderSampledImageArrayNonUniformIndexing, ERR_CANT_CREATE, "Your GPU doesn't support shaderSampledImageArrayNonUniformIndexing which is required to use the Vulkan-based renderers in Godot."); +#endif + + if (is_device_extension_enabled(VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME)) { + shader_capabilities.shader_float16_is_supported = device_features_vk12.shaderFloat16; + shader_capabilities.shader_int8_is_supported = device_features_vk12.shaderInt8; + } + } else { + if (is_device_extension_enabled(VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME)) { + shader_capabilities.shader_float16_is_supported = shader_features.shaderFloat16; + shader_capabilities.shader_int8_is_supported = shader_features.shaderInt8; + } + } + if (is_device_extension_enabled(VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME)) { vrs_capabilities.pipeline_vrs_supported = vrs_features.pipelineFragmentShadingRate; vrs_capabilities.primitive_vrs_supported = vrs_features.primitiveFragmentShadingRate; @@ -798,11 +844,6 @@ Error VulkanContext::_check_capabilities() { multiview_capabilities.tessellation_shader_is_supported = multiview_features.multiviewTessellationShader; } - if (is_device_extension_enabled(VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME)) { - shader_capabilities.shader_float16_is_supported = shader_features.shaderFloat16; - shader_capabilities.shader_int8_is_supported = shader_features.shaderInt8; - } - if (is_device_extension_enabled(VK_KHR_16BIT_STORAGE_EXTENSION_NAME)) { storage_buffer_capabilities.storage_buffer_16_bit_access_is_supported = storage_feature.storageBuffer16BitAccess; storage_buffer_capabilities.uniform_and_storage_buffer_16_bit_access_is_supported = storage_feature.uniformAndStorageBuffer16BitAccess; @@ -1279,6 +1320,10 @@ Error VulkanContext::_create_physical_device(VkSurfaceKHR p_surface) { // features based on this query vkGetPhysicalDeviceFeatures(gpu, &physical_device_features); + // Check required features + ERR_FAIL_COND_V_MSG(!physical_device_features.imageCubeArray, ERR_CANT_CREATE, "Your GPU doesn't support image cube arrays which are required to use the Vulkan-based renderers in Godot."); + ERR_FAIL_COND_V_MSG(!physical_device_features.independentBlend, ERR_CANT_CREATE, "Your GPU doesn't support independentBlend which is required to use the Vulkan-based renderers in Godot."); + physical_device_features.robustBufferAccess = false; // Turn off robust buffer access, which can hamper performance on some hardware. #define GET_INSTANCE_PROC_ADDR(inst, entrypoint) \ @@ -2252,7 +2297,7 @@ Error VulkanContext::swap_buffers() { // simple that it doesn't do either of those. } #endif - // Wait for the image acquired semaphore to be signalled to ensure + // Wait for the image acquired semaphore to be signaled to ensure // that the image won't be rendered to until the presentation // engine has fully released ownership to the application, and it is // okay to render to the image. @@ -2304,7 +2349,7 @@ Error VulkanContext::swap_buffers() { if (separate_present_queue) { // If we are using separate queues, change image ownership to the // present queue before presenting, waiting for the draw complete - // semaphore and signalling the ownership released semaphore when finished. + // semaphore and signaling the ownership released semaphore when finished. VkFence nullFence = VK_NULL_HANDLE; pipe_stage_flags[0] = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT; submit_info.waitSemaphoreCount = 1; diff --git a/drivers/vulkan/vulkan_context.h b/drivers/vulkan/vulkan_context.h index 7044064e12..9fd2c40a06 100644 --- a/drivers/vulkan/vulkan_context.h +++ b/drivers/vulkan/vulkan_context.h @@ -280,6 +280,7 @@ public: const VRSCapabilities &get_vrs_capabilities() const { return vrs_capabilities; }; const ShaderCapabilities &get_shader_capabilities() const { return shader_capabilities; }; const StorageBufferCapabilities &get_storage_buffer_capabilities() const { return storage_buffer_capabilities; }; + const VkPhysicalDeviceFeatures &get_physical_device_features() const { return physical_device_features; }; VkDevice get_device(); VkPhysicalDevice get_physical_device(); diff --git a/drivers/windows/file_access_windows.cpp b/drivers/windows/file_access_windows.cpp index 37a94ce4cc..ea40622afc 100644 --- a/drivers/windows/file_access_windows.cpp +++ b/drivers/windows/file_access_windows.cpp @@ -34,7 +34,6 @@ #include "core/os/os.h" #include "core/string/print_string.h" - #include <share.h> // _SH_DENYNO #include <shlwapi.h> #define WIN32_LEAN_AND_MEAN @@ -58,7 +57,27 @@ void FileAccessWindows::check_errors() const { } } +bool FileAccessWindows::is_path_invalid(const String &p_path) { + // Check for invalid operating system file. + String fname = p_path; + int dot = fname.find("."); + if (dot != -1) { + fname = fname.substr(0, dot); + } + fname = fname.to_lower(); + return invalid_files.has(fname); +} + Error FileAccessWindows::open_internal(const String &p_path, int p_mode_flags) { + if (is_path_invalid(p_path)) { +#ifdef DEBUG_ENABLED + if (p_mode_flags != READ) { + WARN_PRINT("The path :" + p_path + " is a reserved Windows system pipe, so it can't be used for creating files."); + } +#endif + return ERR_INVALID_PARAMETER; + } + _close(); path_src = p_path; @@ -313,6 +332,10 @@ void FileAccessWindows::store_buffer(const uint8_t *p_src, uint64_t p_length) { } bool FileAccessWindows::file_exists(const String &p_name) { + if (is_path_invalid(p_name)) { + return false; + } + String filename = fix_path(p_name); FILE *g = _wfsopen((LPCWSTR)(filename.utf16().get_data()), L"rb", _SH_DENYNO); if (g == nullptr) { @@ -324,6 +347,10 @@ bool FileAccessWindows::file_exists(const String &p_name) { } uint64_t FileAccessWindows::_get_modified_time(const String &p_file) { + if (is_path_invalid(p_file)) { + return 0; + } + String file = fix_path(p_file); if (file.ends_with("/") && file != "/") { file = file.substr(0, file.length() - 1); @@ -352,4 +379,20 @@ FileAccessWindows::~FileAccessWindows() { _close(); } +HashSet<String> FileAccessWindows::invalid_files; + +void FileAccessWindows::initialize() { + static const char *reserved_files[]{ + "con", "prn", "aux", "nul", "com0", "com1", "com2", "com3", "com4", "com5", "com6", "com7", "com8", "com9", "lpt0", "lpt1", "lpt2", "lpt3", "lpt4", "lpt5", "lpt6", "lpt7", "lpt8", "lpt9", nullptr + }; + int reserved_file_index = 0; + while (reserved_files[reserved_file_index] != nullptr) { + invalid_files.insert(reserved_files[reserved_file_index]); + reserved_file_index++; + } +} +void FileAccessWindows::finalize() { + invalid_files.clear(); +} + #endif // WINDOWS_ENABLED diff --git a/drivers/windows/file_access_windows.h b/drivers/windows/file_access_windows.h index 832cef3363..2b9960d494 100644 --- a/drivers/windows/file_access_windows.h +++ b/drivers/windows/file_access_windows.h @@ -50,6 +50,9 @@ class FileAccessWindows : public FileAccess { void _close(); + static bool is_path_invalid(const String &p_path); + static HashSet<String> invalid_files; + public: virtual Error open_internal(const String &p_path, int p_mode_flags) override; ///< open a file virtual bool is_open() const override; ///< true when file is open @@ -79,6 +82,9 @@ public: virtual uint32_t _get_unix_permissions(const String &p_file) override; virtual Error _set_unix_permissions(const String &p_file, uint32_t p_permissions) override; + static void initialize(); + static void finalize(); + FileAccessWindows() {} virtual ~FileAccessWindows(); }; |