Commit Graph

1938 Commits

Author SHA1 Message Date
libretroadmin f29fbda584 (Wayland) Fix build 2023-06-01 23:03:26 +02:00
libretroadmin 31751a3945 Cleanups 2023-06-01 22:52:05 +02:00
libretroadmin f3fe46393c Cleanups 2023-06-01 20:29:05 +02:00
libretroadmin 27aeb314a1 merge d3d8_common.c into d3d8.c 2023-06-01 20:14:19 +02:00
libretroadmin 36cf7f00a8 Cleanups 2023-06-01 19:59:11 +02:00
libretroadmin 0ee2f93ca4 Combine gfx_display files into video drivers 2023-05-31 23:58:06 +02:00
libretroadmin d1b9badf41 Rename common files to _defines.h 2023-05-31 22:46:34 +02:00
libretroadmin f08958dbc1 Move inline functions to files that actually need them,
move enums at the top of the header files
2023-05-31 21:50:07 +02:00
libretroadmin 77466d6f85 Rename d3d_w32_font.c to d3d9x_w32_font.c 2023-05-31 21:32:52 +02:00
libretroadmin 020e5fd7af (Vulkan) vulkan_debug_mark_object - C89 buildfix 2023-05-31 21:11:09 +02:00
libretroadmin 29584b9960 Move d3d8_texture_new to d3d8.c and make it static 2023-05-31 19:43:20 +02:00
libretroadmin 923b756926 Turn inline function into macro and move it to vulkan.c 2023-05-31 19:38:49 +02:00
libretroadmin 40fb10fd4e - Move Vulkan common functions over to vulkan.c
- Fix some platforms
2023-05-31 19:32:33 +02:00
libretroadmin 4f6010bea7 COmbine font raster files and video driver files 2023-05-31 19:03:45 +02:00
libretroadmin 696dae6e70 Refactor away some video driver functions 2023-05-31 01:09:38 +02:00
libretroadmin c07e6a6da2 Cleanups 2023-05-30 20:30:37 +02:00
libretroadmin c09fb6d95d Cleanups 2023-05-30 12:19:53 +02:00
Colin Kinloch 402b381c9b Revert "(Wayland) Remove splash screen (#15178)"
This reverts commit f19def349f.
2023-05-29 19:16:21 +02:00
libretroadmin c24744eae5 Remove video_driver_show_mouse/hide_mouse 2023-05-29 18:58:23 +02:00
zoltanvb e0a8d403f1 Support screen refresh rate with Vulkan KHR_Display context 2023-05-28 14:18:51 +02:00
libretroadmin ced83c41e6 (Font) Less casting 2023-05-07 21:13:44 +02:00
libretroadmin dcefb6e028 (D3D12) Get rid of the small inline wrapper functions 2023-04-24 18:11:26 +02:00
libretroadmin 2a5c419d38 Cleanup d3d12_heap_descriptor_alloc 2023-04-24 10:54:46 +02:00
libretroadmin 238f887931 Get rid of initial for loop C89 noncompliance
* uwp_main.c - code style cleanups
2023-04-23 10:47:09 +02:00
Colin Kinloch f19def349f
(Wayland) Remove splash screen (#15178) 2023-04-10 16:37:48 +02:00
Colin Kinloch e8ec3031a8
(Wayland) wp_viewporter + scaling fix (#15176)
* Use wp_viewporter
* Set buffer scale to highest of displays the window is touching
* Fixes fullscreen issue mentioned in #15168
* Simplify process of adding new wayland protocols
2023-04-10 06:29:41 +01:00
aliaspider 0adbd6905f
add D3D12 HW_render support. (#15177) 2023-04-10 01:08:44 +01:00
Colin Kinloch d625ca3762
(Wayland) Only display splash when necessary (#15168) 2023-04-08 02:41:07 +01:00
OsirizX 6cc05ab5ce
(PSL1GHT) Add overlay support (#15149) 2023-04-04 15:05:59 +01:00
libretroadmin f46beade21 (Android) Buildfix 2023-04-03 22:47:50 +02:00
libretroadmin 96a4417e38 (Vulkan) vulkan_surface_create - we already set all members of this
struct - memset unnecessary
2023-04-03 20:51:41 +02:00
libretroadmin 223f063894 Simplify win32_common.c 2023-04-03 20:26:04 +02:00
barbudreadmon 1fb9853a93
(Shaders) pass rotation index to shaders (#15136) 2023-03-26 21:20:27 +01:00
Colin Kinloch a6e6ddf425
(Wayland) Update destruction (#15129) 2023-03-24 15:14:56 +01:00
sonninnos 390ee5c3c7
(Win32) Increase maximum window limit (#15125) 2023-03-23 18:02:09 +01:00
libretroadmin b07353a0d9 Put forward declaration in wgl_ctx.c 2023-03-17 16:13:09 +01:00
libretroadmin 2902d11b1a Rewinding code should not be a forced built-in dependency 2023-03-17 16:08:41 +01:00
sonninnos 281ccab6ee
(Win32) Ignore window limiting with fixed position (#15092) 2023-03-13 23:17:47 +01:00
Colin Kinloch 297aa1ff72
(Wayland) Build pointer-constraints and relative-pointer protocols (#15071)
Signed-off-by: Colin Kinloch <colin.kinloch@collabora.com>
2023-03-09 19:54:36 +01:00
Colin Kinloch e54495235e
(Wayland) Wait for splash screen configuration (#14485)
* (Wayland) Wait for splash screen configuration

Signed-off-by: Colin Kinloch <colin.kinloch@collabora.com>

* (Wayland/libdecor) Remove unnecessary context creation check. Log library load.

Signed-off-by: Colin Kinloch <colin.kinloch@collabora.com>

* (Wayland) Bring xdg_toplevel configure in line with libdecor and add icon to splash screen

Signed-off-by: Colin Kinloch <colin.kinloch@collabora.com>

---------

Signed-off-by: Colin Kinloch <colin.kinloch@collabora.com>
2023-03-08 22:56:24 +01:00
Colin Kinloch e31b7fe6c2
(Wayland) Fix resize check (#15065)
* (Wayland) Fix resize check

Signed-off-by: Colin Kinloch <colin.kinloch@collabora.com>

* (Wayland/GL) Correct scaling on resize

Signed-off-by: Colin Kinloch <colin.kinloch@collabora.com>

* (Wayland) Fix fullscreen buffers being initially double scaled

Signed-off-by: Colin Kinloch <colin.kinloch@collabora.com>

---------

Signed-off-by: Colin Kinloch <colin.kinloch@collabora.com>
2023-03-08 20:08:31 +01:00
sonninnos 17b46b5f93
(Win32) Window size improvements (#15068) 2023-03-07 16:51:08 +01:00
sonninnos 4699d91ed5
(Win32) Use core geometry as window limit (#15060) 2023-03-05 15:21:05 +01:00
libretroadmin f60b3ec7a1 Fix MSVC error 2023-03-03 20:07:40 +01:00
sonninnos 84691edd3f
(Win32) Limit minimum window size (#15053) 2023-03-03 17:50:30 +01:00
Manuel Alfayate Corchete 6e27b6f571
[Vulkan] Don't clamp the number of requested images. (#15047) 2023-03-03 00:49:02 +01:00
libretroadmin 51d238875e Get rid of obsolete HAVE_VIDEO_LAYOUT - obsolete spec, was only
ever implemented for OpenGL2 driver, lots of code debt, best to
instead just keep improving the overlay system instead which is
already available for most video drivers
2023-02-23 21:03:41 +01:00
libretroadmin 581b9e0b0d (RSX) Updates to video driver 2023-02-23 16:11:01 +01:00
libretroadmin 7ebab640d7 Cleanups/style nits 2023-02-23 13:15:14 +01:00
libretroadmin 57828bf246 Turn some of the logging into _DBG 2023-02-23 00:42:34 +01:00
OsirizX c0ccb8cda3
(PSL1GHT) Code cleanup (#15006)
* (PSL1GHT) Use RSX_SHADER_STOCK_BLEND and RSX_SHADER_MENU defines

* (PSL1GHT) Cleanup compiler warnings

* (PSL1GHT) Make sure we compile with librt
2023-02-22 08:14:38 +01:00
LibretroAdmin c810520a55
Revert "(Vulkan) Add adaptive vsync support (#14788)" (#15004)
This reverts commit 4543a52be6.
2023-02-21 23:00:06 +01:00
sonninnos 4543a52be6
(Vulkan) Add adaptive vsync support (#14788)
* (Vulkan) Add adaptive vsync support

* (Vulkan) Mailbox presentation case
2023-02-21 22:42:32 +01:00
libretroadmin 22992d7f95 Add function prototype to egl_common.h 2023-02-21 22:26:52 +01:00
libretroadmin aa9f53659f (EGL) Remove egl_has_config 2023-02-21 22:16:04 +01:00
libretroadmin b442d6c9f8 (Vulkan) Small cleanups 2023-02-21 21:19:27 +01:00
libretroadmin cc85d7fd6d (EGL) Cleanups
(GLSL) Buildfix
2023-02-21 21:09:47 +01:00
libretroadmin f96ff71416 (video context drivers) Cleanups 2023-02-21 09:49:46 +01:00
libretroadmin 947de1218a (RSX) Set RSX_MAX_SHADERS back to 2 - makes no difference to the array
bound warnings
2023-02-20 17:11:05 +01:00
libretroadmin 4620b55476 (RSX/PSL1GHT) Cleanups and getting rid of warnings - array bounds exceeding
was troublesome so bumped up max shaders to 10 for now, some style nits in
RSX video driver, variable center_y could be uninitialized so fixed that
in psl1ght_input.c
2023-02-20 16:13:23 +01:00
libretroadmin 7b413b667e (RSX) Silence some warnings 2023-02-20 14:18:40 +01:00
libretroadmin 5abbf0778f (vulkan_common) vulkan_create_swapchain - try to silence vulkan warnings 2023-02-19 13:54:17 +01:00
libretroadmin 1d9cb216ca Silence some warnings/LTO issues 2023-02-19 10:21:37 +01:00
libretroadmin 6624126885 (MSVC) silence warnings 2023-02-18 17:04:23 +01:00
reallibretroadmin 6fc57765c3 Silence warning 2023-02-14 02:09:04 +01:00
Hans-Kristian Arntzen 89d2d66e98
[Vulkan] Fix regression with RGB565 and OriginalHistory. (#14968)
Need to let filter chain know that we remapped the format.
Otherwise we end up trying to copy RGBA8888 to RGB565.
2023-02-12 18:10:07 +01:00
OsirizX 0549223677
(PSL1GHT) Add improvements to the RSX driver (#14965)
* remove var error in psl1ght input

* (psl1ght) add modern_alpha_blend and modern_opaque rsx shaders

* (psl1ght) add perf improvements to the rsx driver

* add rsx gfx for psl1ght

* (psl1ght) set rsx as a compatible video driver

* Do xmb menu scaling for psl1ght

* (psl1ght) update Makefile to use latest shaders and more UI menu options
2023-02-10 08:29:45 +01:00
reallibretroadmin c92213bc9d Silence warning about unused variables 2023-02-06 02:46:00 +01:00
Hans-Kristian Arntzen a77ada403e
[Vulkan] Use compute shaders to upload RGB565. (#14953)
A compatible path that is still fast. No reason to bother checking for
compat here really.
2023-02-05 19:23:48 +01:00
Hans-Kristian Arntzen 9f7d0c74d5
[Vulkan] Define and implement v2 of context negotiation interface (#14890)
* [Vulkan] Add v2 of context negotiation interface.

* [Vulkan] Add vkEnumerateInstanceVersion symbol.

* [Vulkan] Implement v2 context negotiation

* [libretro] Add GET_HW_CONTEXT_NEGOTIATION_INTERFACE_SUPPORT.

Works around issues in v1 interface where it was not possible to
query what frontend would do when faces with newer interface versions.

This env-call gives stronger guarantees how things have to work.

* [runloop] Implement GET_HW_CONTEXT_NEGOATION_INTERFACE_SUPPORT.

Fairly trivial. Just report the latest version.

* [Vulkan] Add stricted wording around get_application_info in v2.

* [Vulkan] Be more defensive about get_application_info() in v1.
2023-02-04 16:51:50 +01:00
libretroadmin b5244cbfe7 Turn ctr_set_scale_vector into a macro 2023-01-24 23:35:37 +01:00
libretroadmin e30793b06f (CTR) Remove ctr_set_scale_vector until we actually have a need for it 2023-01-24 23:04:07 +01:00
libretroadmin fdc47dcdae Remove redundant headers 2023-01-24 22:59:15 +01:00
libretroadmin e272edc8c0 (SDL2) Cleanups 2023-01-24 21:54:06 +01:00
libretroadmin 4c3fefa2be (GL3) Use flags instead of booleans 2023-01-24 21:35:27 +01:00
libretroadmin 582ed9e9e8 (GL1) Use flags instead of boolean variables 2023-01-24 20:33:41 +01:00
libretroadmin 087e3ec974 (GL1) Inline gl1_bind_texture 2023-01-24 18:55:16 +01:00
libretroadmin 19705a3453 (D3D12) Get rid of some wrapper functions 2023-01-24 18:33:52 +01:00
libretroadmin 1a93bb3844 (Vulkan) Move some code around 2023-01-24 04:40:17 +01:00
libretroadmin bb48289dd4 (GL3) Move functions over to shader_gl3.cpp and make them static 2023-01-24 04:24:22 +01:00
libretroadmin 6b184a1857 (D3D10) Cleanups - get rid of some inline functions 2023-01-24 03:36:18 +01:00
libretroadmin 980196b24d Header include cleanups 2023-01-24 02:30:58 +01:00
libretroadmin 9a0ecaab4b Remove some unused variables 2023-01-24 01:18:59 +01:00
warmenhoven 5b4c2c3e12
avoid using _PACK16 pixel formats on platforms without them (#14863) 2023-01-23 21:00:22 +01:00
libretroadmin 571e7cbd67 (GL2) Convert bools to flags 2023-01-23 18:22:13 +01:00
Hans-Kristian Arntzen f7a9d64d73
Fix crash when using multiple physical devices and HW core (#14889)
* [Vulkan] Detect if wrong PhysicalDevice is returned.

* [Vulkan] Actually query physical device before creating core device.
2023-01-22 17:28:59 +01:00
warmenhoven 769e448eac
Fix non-HDR colors on OSX (#14860) 2023-01-16 23:27:54 +01:00
sonninnos b8bcce98c3
(WIN32) Restore zero key event characters (#14848) 2023-01-15 09:00:47 +01:00
sonninnos 3e599d04d3
(WIN32) Add support for mouse button swap (#14846) 2023-01-14 21:33:26 +01:00
sonninnos 639d367773
(WIN32) Fix keyboard event characters (#14844) 2023-01-14 06:46:24 +01:00
libretroadmin e10361ed52 Header include cleanups for driver.h 2023-01-09 15:28:15 +01:00
libretroadmin daa9e352cc Remove asserts 2023-01-09 00:51:05 +01:00
libretroadmin 8a3686df58 Revert "Header cleanups - don't include retroarch.h everywhere"
This reverts commit 0e3b478f8c.
2023-01-08 09:05:46 +01:00
libretroadmin 0e3b478f8c Header cleanups - don't include retroarch.h everywhere 2023-01-08 08:56:57 +01:00
reallibretroadmin 074f19ca90 (Metal) Cleanups 2023-01-08 05:48:06 +01:00
reallibretroadmin 29f165026a (Metal) Small cleanups 2023-01-08 05:34:05 +01:00
reallibretroadmin 10947894ea Combine metal_common.m into metal.m 2023-01-08 01:37:54 +01:00
reallibretroadmin 6199baff3a Silence several Vulkan related warnings that showed up in Xcode 2023-01-07 08:05:06 +01:00
Eric Warmenhoven 3c199c794e Updated Vulkan on Metal for OSX via MoltenVK 2023-01-07 07:38:42 +01:00
libretroadmin fd59309fcd Cleanups 2022-12-05 14:03:21 +01:00
libretroadmin 30ea7da063 Cut down on header includes 2022-12-05 13:44:20 +01:00
sonninnos 9e503a6106
Build warning fix win32 (#14692) 2022-12-02 17:47:07 +01:00
LibretroAdmin c75af6194b
Extended IME and Korean OSK (#14676) 2022-11-29 04:45:55 +01:00
MajorPainTheCactus 7ebd8e190a
Fixes for d3d12 and d3d11 drivers when using shaders with TATE mode arcades etc (#14678)
Added support for break on errors in d3d12 (development aid)
Added support for DRED (device remove extended data) in d3d12 (development aid)
Made d3d12 viewport and scissors to behave more like vulkan drivers (or be more correct)
Fixed validation error on start up due to buffers not being setup correctly for one frame
2022-11-27 10:20:34 +01:00
libretroadmin e108fefc41 Remove video_driver_set_video_cache_context_ack - replace with single line 2022-11-23 20:55:05 +01:00
libretroadmin 6a098d37ac Use HAVE_DYLIB instead of HAVE_DYNAMIC when loading shared libraries 2022-11-21 05:37:35 +01:00
libretroadmin 3b38ea195f Use HAVE_DYLIB for loading dynamic libraries instead of HAVE_DYNAMIC 2022-11-21 05:23:43 +01:00
libretroadmin 9e0c0865cd Use HAVE_DYLIB more 2022-11-16 17:09:53 +01:00
libretroadmin 63153620a7 There can be builds that are statically built against a libretro core
but still have dylib support
2022-11-16 16:51:53 +01:00
LibretroAdmin bba1fdca30 (D3D12) Use flags instead of boolean variables 2022-11-03 01:31:15 +01:00
LibretroAdmin 7aa8c6bb11 (D3D10) Turn boolean variables into flags 2022-11-02 23:19:41 +01:00
LibretroAdmin 56ad3fa091 (Vk struct) Turn boolean variables into flags 2022-11-02 21:34:00 +01:00
LibretroAdmin 15048027e7 (D3D11) Turn booleans into flags 2022-11-02 08:31:40 +01:00
LibretroAdmin c4d2788c08 Rollback extended character PR - caused too many issues
and caused crashes - contributor can submit a new improved PR -
would also prefer increased readability
2022-11-02 06:23:46 +01:00
LibretroAdmin 5d4c6a9564 Some small opts to two conditionals 2022-10-30 23:21:43 +01:00
LibretroAdmin 724acc4eb9 (Vulkan) Use flags for vulkan_ctx_data 2022-10-30 23:07:07 +01:00
LibretroAdmin 0159c2f70f gfx_ctx_vulkan_data - use flags instead of booleans 2022-10-30 22:03:36 +01:00
LibretroAdmin a94c4c72c2 Use size_t as type for returned value of strlen instead of int 2022-10-29 19:40:48 +02:00
Kangmo-Ahn 3a744b7dae
Extended character ime (#14559)
* Update Makefile

* Update win32_common.c

* Update input_driver.c

* Update gfx_thumbnail_path.c
2022-10-29 19:01:30 +02:00
LibretroAdmin 174b01f7d9 Remove unnecessary video_driver_is_cache_context 2022-10-28 19:36:56 +02:00
LibretroAdmin c0d6d6e750 Create video_driver_get_st_flags 2022-10-26 22:35:04 +02:00
LibretroAdmin d0b3c1742d (Video) use flags for FBO passes, GL2 renderchain, etc 2022-10-26 21:21:21 +02:00
LibretroAdmin 18639cca6e (Win32) Create g_win32_flags - reduce amount of global booleans kept
around for state
2022-10-26 17:31:42 +02:00
Colin Kinloch 8bbc4a90f3
(Wayland) Set correct app ID (#14521)
Signed-off-by: Colin Kinloch <colin.kinloch@collabora.com>

Signed-off-by: Colin Kinloch <colin.kinloch@collabora.com>
Co-authored-by: Colin Kinloch <colin.kinloch@collabora.com>
2022-10-17 00:06:27 +02:00
LibretroAdmin fcbd72dbf3
Use flags pt4 (#14497)
* * Use flags for rarch_state
* Get rid of ^M linebreaks in retroarch_types.h

* Buildfixes for consoles

* (audio driver) use flags instead of bools

* (video) Use flags instead of bools

* Rewrite input driver state bools into flags
2022-10-08 10:39:15 +02:00
LibretroAdmin f40d157571
Use flags pt3 (#14491)
* (Vulkan) Use flags for vulkan_emulated_mailbox

* Use flags for vk_texture

* dispgfx_widget - use flags instead of bools

* (Autoconfig) Use flags
2022-10-07 11:08:17 +02:00
LibretroAdmin 951b98fe1b
Bools to flags (#14486)
* (D3D11) Use flags instead of bools

* (RPNG) Use flags

* Simplify rpng_is_valid

* (rpng_is_valid) Prevent potential NULL pointer dereference
(D3D11) Some whitespacing changes/code nits

* (task_pl_thumbnail_download.c) Simplify some code
2022-10-06 19:26:38 +02:00
libretroadmin 13ac88c9df (Metal common) Cleanups 2022-10-01 21:41:32 +02:00
LibretroAdmin 86dccbf1d6 Buildfix 2022-10-01 18:47:41 +02:00
LibretroAdmin ace21d28f7 Fix C++ comments 2022-10-01 17:56:16 +02:00
LibretroAdmin 75757d7d02 Remove unused DXGI inline functions 2022-09-11 23:15:25 +02:00
LibretroAdmin 7ae555a51d (X11/Xinerama) Style nits; slightly optimize x11_get_metrics 2022-09-05 19:44:15 +02:00
LibretroAdmin 77f3e20e3c (CodeQL) Only use 'cpp' language
(X11) Use HAVE_XF86VM for XFree86-VidMode X extension library
2022-09-05 18:26:08 +02:00
LibretroAdmin 0ffdd14940 Change msg_len of font driver to size_t - avoids all the type
casting/conversion
2022-09-02 01:10:28 +02:00
Themaister d6413f2a43 Automatically mark buffer/images/memory with names. 2022-08-31 19:46:11 +02:00
Themaister d9088dd2a9 Add helpers to mark object names automatically.
Can be trivially extended as required.
2022-08-31 19:45:33 +02:00
Themaister 6038d503c2 Move over to VK_EXT_debug_utils.
Debug marker is deprecated years ago.
2022-08-31 19:45:21 +02:00
LibretroAdmin 22a12c9861 vulkan_context_init_device - simplify some string concatenation 2022-08-29 12:09:40 +02:00
LibretroAdmin e6fd2c9cdb (Win32) Do optimization for Windows where we only update the title
when the previous title differs from the current title
(X11) Have to roll back the previous title optimization/less calls to XChangeProperty,
because the title is lost upon toggling between fullscreen/windowed and is no longer
set
2022-08-27 16:16:24 +02:00
LibretroAdmin 938d7c1fc4 (X11) Optimize x11_update_title - it was previously calling XChangeProperty
at regular intervals even when the title output for the window title had not
changed at all, now we compare it properly against the last set title, and
only if it has changed will we make the call to XChangeProperty. Also, do
away with strlen(title) calculation and use return value of
video_driver_get_window_title instead
2022-08-27 16:03:38 +02:00
LibretroAdmin 0c7408ee16 (EGL) Buildfix 2022-08-27 15:43:16 +02:00
LibretroAdmin bbf93812a5 (EGL) Turn some EGL functions static 2022-08-27 15:35:08 +02:00
LibretroAdmin 61e24132bf (task_save.c) Simplification in control flow
(snprintf) Try to reduce or simplify snprintf calls, only tend to
use it for processing integers/numbers and avoid it for regular
string concatenation (NOTE: we try to be a bit safer about it to
address earlier cited criticism, although we don't consider concatenating
3 or 4 characters at the end to be insecure)
(msg_hash_to_str) Try to avoid duplicate calls to the same localized
string when we can just cache the results once instead locally
2022-08-27 07:55:02 +02:00
LibretroAdmin da13fb0f48 Don't include errno.h in files that don't justify its use 2022-08-25 05:19:30 +02:00
MrHuu 46bafd6e46
(3DS) Add bottom menu options (#14323) 2022-08-17 08:23:07 +02:00
LibretroAdmin 5739c537a2 Some CXX_BUILD fixes 2022-08-05 17:40:06 +02:00
LibretroAdmin 72a7b3ce07 (X11) Turn these two functions static 2022-08-05 02:00:09 +02:00
LibretroAdmin 67c23aec0e (Wayland) Stub out unused variables for now
(menu_contentless_cores) Fix mistake - needed to set len to return
value of fill_pathname_join_special
(configuration.c) Fix some unused variable warnings on Linux
2022-08-04 16:19:50 +02:00
LibretroAdmin e7f3432e48 Replace some trivial strlcat usage - use return value of preceding
strlcpy then simply append the extension to it at this location
2022-08-04 03:45:09 +02:00
LibretroAdmin 7a993a5951
Count amount of characters window title has so that we can (#14274)
return the value when calling video_driver_get_window_title -
this is so we can prevent strlen calls in x11_common.c
2022-08-02 17:00:33 +02:00