Liam
c18cf05a06
cmake: make cubeb and SDL2 optional
2022-12-28 17:29:32 -05:00
bunnei
60419dd35e
Merge pull request #9504 from liamwhite/pg2
...
k_page_group: synchronize
2022-12-28 17:28:31 -05:00
Liam
be43b62d79
cmake: make libusb optional
2022-12-28 17:26:46 -05:00
Liam
106cf27135
cmake: make room server optional
2022-12-28 17:18:27 -05:00
Colin Kinloch
2ccf175324
settings: warn on invalid regon/language combinations
2022-12-28 20:34:28 +00:00
bunnei
c5de54d509
Merge pull request #9490 from ameerj/texture-cache-prealloc
...
texture_cache: Use pre-allocated heap buffer for texture swizzles
2022-12-27 00:07:35 -05:00
bunnei
343c01b87a
Merge pull request #9495 from german77/no_refresh
...
yuzu: Automatically refresh device list
2022-12-27 00:07:13 -05:00
Alexandre Bouvier
dce2649daf
tests: add missing header
...
<cstring> is needed for std::memcpy
2022-12-26 04:26:31 +00:00
FengChen
6a397bc8ed
video_core: Implement other missing vulkan topology
2022-12-26 12:20:49 +08:00
FengChen
86d5b4e556
video_core: Implement vulkan QuadStrip topology
2022-12-26 11:37:34 +08:00
MonsterDruide1
bc4126acd7
TAS: Increase accuracy of Stick inputs
2022-12-25 21:49:09 +01:00
ameerj
7584d36922
texture_cache: Use Common::ScratchBuffer for swizzle buffers
2022-12-25 15:47:41 -05:00
ameerj
1209d428f1
texture_cache: Use pre-allocated buffer for texture downloads
2022-12-25 15:38:36 -05:00
ameerj
c448b3af2f
texture_cache: Use pre-allocated buffer for texture uploads
2022-12-25 15:38:36 -05:00
Liam
28d9c30861
k_page_table: remove HACK_OpenPages/ClosePages
2022-12-25 13:43:49 -05:00
Liam
3392fdac9b
k_page_group: synchronize
2022-12-25 12:55:21 -05:00
liamwhite
9933121256
Merge pull request #9500 from liamwhite/reentrant-shutdown
...
qt: prevent reentrant shutdown
2022-12-25 12:51:25 -05:00
liamwhite
c6767704fb
Merge pull request #9496 from liamwhite/shm3
...
kernel: workaround static shared memory initialization
2022-12-25 12:51:16 -05:00
liamwhite
ea70d9c79e
Merge pull request #9487 from liamwhite/look-at-the-time
...
time: add LockFreeAtomicType
2022-12-25 12:50:57 -05:00
Fernando S
3e6850f00b
Merge pull request #9453 from ameerj/scratch-vector
...
common: Add ScratchBuffer Class
2022-12-24 20:26:06 -05:00
Liam
cb7f0c2ec3
qt: prevent reentrant shutdown
2022-12-24 17:31:34 -05:00
liamwhite
c86e21abe4
qt: fix 'Pause' menu item ( #9497 )
2022-12-23 21:44:53 -05:00
Chris Oboe
201733d1b5
Disable automatically opening the console on windows yuzu-cmd builds ( #9485 )
...
* don't automatically open the console on windows build of yuzu-cmd
* fix formatting
2022-12-23 21:39:59 -05:00
liamwhite
db15142ac9
Merge pull request #9476 from liamwhite/async-shutdown
...
qt: continue event loop during game close
2022-12-23 21:05:10 -05:00
Liam
646656412f
qt: fix uninitialized memory usage
2022-12-23 20:57:36 -05:00
german77
c3a5522830
yuzu: Automatically refresh device list
2022-12-23 18:26:48 -06:00
Liam
99eccf581e
kernel: workaround static shared memory initialization
2022-12-23 13:40:30 -05:00
Liam
80670a5b6c
time: add LockFreeAtomicType
2022-12-21 22:36:55 -05:00
Liam
60ce34aa80
qt: exit properly on guest-initiated close
2022-12-21 19:55:01 -05:00
Liam
ae6015a69b
qt: use main window as close overlay parent
2022-12-21 19:27:11 -05:00
Liam
053ad04d3f
qt: continue event loop during game close
2022-12-20 09:16:08 -05:00
liamwhite
1b11e0f0d3
Merge pull request #9463 from liamwhite/manager-events
...
EmuThread: refactor
2022-12-20 09:10:41 -05:00
ameerj
c6590ad07b
scratch_buffer: Explicitly defing resize and resize_destructive functions
...
resize keeps previous data intact when the buffer grows
resize_destructive destroys the previous data when the buffer grows
2022-12-19 22:40:50 -05:00
liamwhite
6cb6b2da8e
Merge pull request #9480 from jbeich/vk-238
...
externals: update Vulkan-Headers to v1.3.238 to fix -Werror=switch with system package
2022-12-19 18:16:41 -05:00
ameerj
64869807e2
tests: Add ScratchBuffer tests
2022-12-19 18:08:04 -05:00
ameerj
61e4f2d931
dma_pusher: Rework command_headers usage
...
Uses ScratchBuffer and avoids overwriting the command_headers buffer with the prefetch_command_list
2022-12-19 18:08:04 -05:00
ameerj
bdef22ff85
buffer_cache: Use Common::ScratchBuffer for ImmediateBuffer usage
2022-12-19 18:08:04 -05:00
ameerj
4bc2d82130
video_core: Add usages of ScratchBuffer
2022-12-19 18:08:04 -05:00
ameerj
cfc34dd41d
common: Add ScratchBuffer class
...
This class creates a default initialized heap allocated buffer for cases where value initializing members during allocation or resize
is redundant.
2022-12-19 18:07:51 -05:00
ameerj
88ba5a7f22
common: add make_unique_for_overwrite
2022-12-19 18:07:42 -05:00
Matías Locatti
e44d1fe73c
Merge pull request #9474 from liamwhite/timer
...
kernel: add KHardwareTimer
2022-12-19 18:37:34 -03:00
Jan Beich
b60a93a936
externals: update Vulkan-Headers to v1.3.238
2022-12-19 17:14:29 +00:00
liamwhite
42d81aab32
Merge pull request #9471 from german77/input
...
input_common: Cleanup project
2022-12-19 11:09:00 -05:00
Morph
690a4c9438
overlay_dialog: Avoid starting the input thread if non-interactive
2022-12-19 00:00:03 -05:00
Morph
190ded7f48
overlay_dialog: Hide button dialog box when both buttons are hidden
...
This allows for the creation of a non-interactive dialog overlay to display system messages.
2022-12-18 23:54:56 -05:00
Liam
c770f25ccb
kernel: remove TimeManager
2022-12-18 20:21:24 -05:00
Liam
67c0d714c5
kernel: add KHardwareTimer
2022-12-18 16:37:19 -05:00
german77
cf01a507fb
input_common: Cleanup project
2022-12-18 15:33:11 -06:00
liamwhite
fcc93a445f
Merge pull request #9470 from german77/silenceIkillYou
...
service: nfc: Silence ListDevices
2022-12-18 15:11:13 -05:00
german77
79f1f326c7
service: nfc: Silence ListDevices
2022-12-18 11:57:33 -06:00
liamwhite
2724ffd6e3
Merge pull request #9469 from Rubo3/patch-1
...
Use execlp instead of execl to avoid failure
2022-12-18 11:46:43 -05:00
liamwhite
ee71404d71
Merge pull request #9467 from german77/folder
...
yuzu: Remember last selected directory
2022-12-18 10:21:33 -05:00
Marco Rubin
56b0f979eb
Use execlp instead of execl to avoid failure
2022-12-18 14:03:26 +00:00
german77
c218c7d4da
yuzu: Remember last selected directory
2022-12-18 00:37:06 -06:00
german77
f999d268f9
bootmanager: Use proper camera size
2022-12-18 00:13:18 -06:00
german77
c489cbee29
bootmanager: Encapsulate all QCamera code
2022-12-17 23:54:47 -06:00
german77
dffeca66fa
yuzu: fix device name setting
2022-12-17 23:54:36 -06:00
Matías Locatti
fd1ea0fd84
Enable compiler optimizations and enforce x86-64-v2 on GCC/Clang ( #9442 )
...
* Testing LTO (#4 )
* Testing LTO
* clang
* linux
* Added the rest of Blinkhawk's optimizations
* Unlikely asserts
* Removing LTO from Linux builds - GCC
* Removing LTO from Linux builds - Clang
2022-12-17 17:16:52 -08:00
bunnei
48108a8c9b
Merge pull request #9456 from german77/virtual_gamepad
...
input_common: Add virtual gamepad
2022-12-17 17:16:13 -08:00
Liam
92ce241d4d
qt: use _exit instead of exit on SIGINT
2022-12-17 16:26:25 -05:00
Liam
d3123079e8
EmuThread: refactor
2022-12-17 16:26:24 -05:00
liamwhite
5da72a891f
Merge pull request #7450 from FernandoS27/ndc-vulkan
...
Vulkan: Add support for VK_EXT_depth_clip_control.
2022-12-17 16:08:10 -05:00
Mai
f8a7d6a0ae
Merge pull request #9461 from liamwhite/wanative
...
qt: avoid setting WA_DontCreateNativeAncestors on all platforms
2022-12-17 21:07:01 +00:00
Mai
da31326c17
Merge pull request #9454 from liamwhite/wayland-egl
...
qt: handle wayland-egl platform name
2022-12-17 21:05:46 +00:00
Liam
45672d43e3
qt: avoid setting WA_DontCreateNativeAncestors on all platforms
2022-12-17 10:41:20 -05:00
liamwhite
a3bac5550d
Merge pull request #9451 from ameerj/camera-data-array
...
camera: Use pre-allocated vector for camera data
2022-12-17 10:21:50 -05:00
liamwhite
4faea2bbf4
Merge pull request #9452 from ameerj/hle-read-buffer-resreve
...
hle_ipc: Refactor ReadBuffer to set buffer size upon initialization
2022-12-17 10:21:30 -05:00
liamwhite
fa10374d39
Merge pull request #9455 from Kelebek1/audio_signal
...
[audio_core] Signal buffer event on audio in/out system stop
2022-12-17 10:21:19 -05:00
liamwhite
98135dee16
Merge pull request #9457 from Kelebek1/silence_tfb
...
Remove unimplemented geometry transform feedback log spam
2022-12-17 10:21:05 -05:00
german77
243404bf34
input_common: Add virtual gamepad
2022-12-16 18:26:11 -06:00
ameerj
7bf4bec257
camera: Use pre-allocated vector for camera data
...
And avoid an unnecessary copy
2022-12-16 18:00:47 -05:00
Kelebek1
f7d95d0a3a
Remove unimplemented transform feedback geometry spam, it should be implemented
2022-12-16 22:52:29 +00:00
liamwhite
bbb202ceed
Merge pull request #6354 from ogniK5377/device-name
...
Set: Allow setting device nickname
2022-12-16 14:05:00 -05:00
liamwhite
789da737af
Merge pull request #9450 from ameerj/hle-ipc-vector-reserve
...
hle_ipc: Reserve vectors before populating
2022-12-16 11:57:48 -05:00
liamwhite
b541a35e27
Merge pull request #9444 from german77/free_threads
...
kernel: process: Implement GetFreeThreadCount
2022-12-16 11:57:42 -05:00
liamwhite
6bc1a477bf
Merge pull request #8605 from devsnek/graceful-shutdown
...
let games gracefully exit
2022-12-16 11:57:33 -05:00
liamwhite
9bfd4d880e
Merge pull request #6769 from lat9nq/create-shortcut-2
...
yuzu qt, common: Add option to create game shortcuts on Linux
2022-12-16 11:57:16 -05:00
Kelebek1
6a56f42f5d
Signal buffer event on audio in/out system stop, and force remove all registered audio buffers
2022-12-16 16:07:24 +00:00
Liam
b81caf1879
qt: handle wayland-egl platform name
2022-12-16 08:47:22 -05:00
ameerj
b1d633532f
hle_ipc: Refactor ReadBuffer to set buffer size upon initialization
...
Initializing the vector size during initialization is more efficient than a later call to resize()
2022-12-15 23:22:11 -05:00
ameerj
12c0f682e6
hle_ipc: Reserve vectors before populating
2022-12-15 22:30:42 -05:00
Narr the Reg
9ff891ce71
Merge pull request #9431 from liamwhite/sixty-five-oh-two
...
vulkan_common: declare storageBuffer8BitAccess
2022-12-15 17:52:16 -06:00
Matías Locatti
82d80869fc
Merge pull request #9430 from liamwhite/capable
...
spirv_emit_context: declare GroupNonUniform capability for SubgroupLocalInvocationId
2022-12-15 20:52:05 -03:00
Narr the Reg
20cbf6f3db
kernel: svc: Fix duplicated InfoType enum
2022-12-15 14:18:30 -06:00
Narr the Reg
dca4f0687a
kernel: process: Implement GetFreeThreadCount
...
Used by Just Dance® 2023 Edition
2022-12-15 13:44:21 -06:00
liamwhite
3ff7a5de1a
Merge pull request #7410 from Nefsen402/wayland-fixes
...
Wayland fixes
2022-12-15 12:05:01 -05:00
bunnei
beba9c9b61
Revert "hle: service: audio: Use default service thread."
2022-12-14 14:57:33 -08:00
liamwhite
a222f02c7a
Merge pull request #6688 from yzct12345/valid-intel-max
...
render_vulkan: Fix validation errors on less compatible Intel GPUs
2022-12-14 15:33:10 -05:00
FernandoS27
0104e28fe4
Vulkan: Add support for VK_EXT_depth_clip_control.
2022-12-13 21:39:18 -05:00
Chloe Marcec
c5f519e1e4
Set: Allow setting device nickname
2022-12-13 19:54:17 -05:00
lat9nq
5a5bb91f40
main: Address review feedback
...
Moves icon path to ~/.local/share/icons, though I'm opting to avoid
using the game title for the icon and desktop entry name as that would
cause filenames such as
"yuzu-cadence-of-hyrule-crypt-of-the-necrodancer-featuring-the-legend-of-zelda-demo.desktop".
2022-12-13 19:23:54 -05:00
Liam
4fce72c902
vulkan_common: declare storageBuffer8BitAccess
2022-12-13 18:28:50 -05:00
Liam
77b0d01639
spirv_emit_context: declare GroupNonUniform capability for SubgroupLocalInvocationId
2022-12-13 18:25:53 -05:00
lat9nq
18bdf45868
yuzu qt: Create shortcuts on Linux
...
This creates a Desktop Entry file and a PNG icon for the entry when the
user right-clicks a game and selects "Create Shortcut -> Create
{Application,Desktop} Shortcut". This uses the current executable's path
to create the shortcut.
yuzu qt: Add more error checking and OS gating for shortcuts
main: Remove FreeBSD gating for shortcuts
I'm not going to test FreeBSD, so I don't know if they follow
Freedesktop.org or not. I just have to let someone else verify that it
works there and let them enable it.
main: Move shortcut function to its own function
This function should really be in a common library, at least among
frontends.
main: Remove image manip references
main: Fix difference in MinGW and native GCC versions
main: Fix negation in creat shortcut
Addresses review comment
Co-authored-by: Jan Beich <jbeich@FreeBSD.org>
main: Re-enable freedesktop shorcuts for FreeBSD
2022-12-13 16:42:00 -05:00
Alexander Orzechowski
09e3029c11
gl_device: Use a more robust way to use strict context mode
...
Instead of checking a environment variable which may not actually
exist or is just wrong, ask QT if it's running on the wayland
platform.
2022-12-13 15:01:51 -05:00
Alexander Orzechowski
2221afaf26
OpenGL: Check for threading support
...
We need this.
2022-12-13 13:23:35 -05:00
Alexander Orzechowski
45fcde817e
wayland: Always use exclusive fullscreen
...
Wayland does not allow clients to choose their own size and position
on the screen. The concept of fullscreening an application by sizing
it to the screen and removing decorations does not exist. Use
exclusive fullscreen instead.
2022-12-13 13:23:35 -05:00
Alexander Orzechowski
29fbce9fe6
RenderWidget: Set WA_DontCreateNativeAncestors
...
Some windowing systems like wayland are designed to show hardware accellerated
surfaces as subsurfaces and not native windows.
2022-12-13 13:23:35 -05:00
Alexander Orzechowski
5754456292
emu_window_sdl2: Respect hidpi
...
Use SDL_GL_GetDrawableSize instead of SDL_GetWindowSize which
will return the true size our swapchain needs to be in even
for hidpi displays.
2022-12-13 13:23:35 -05:00
Alexander Orzechowski
3cc3176ad6
video_core/vulkan: Explicity check swapchain size when deciding to recreate
...
Vulkan for whatever reason does not return VK_ERROR_OUT_OF_DATE_KHR when
the swapchain is the wrong size. Explicity make sure the size is indeed
up to date to workaround this.
2022-12-13 13:23:35 -05:00
Liam
d5f53da79d
renderer_opengl: refactor context acquire
2022-12-13 13:23:23 -05:00
Liam
179adee396
emu_thread: properly force shutdown for unresponsive guest programs
2022-12-12 21:38:20 -05:00
Gus Caplan
f44c60321e
let games gracefully exit
2022-12-12 21:18:32 -05:00
yzct12345
f6868ae4dd
Fix validation errors on less compatible Intel GPU
2022-12-12 20:53:05 -05:00
Narr the Reg
0ed80c9818
yuzu: Make unlimited frame rate non persistent between game boots
2022-12-12 19:21:30 -06:00
bunnei
339a37f8cb
Merge pull request #9398 from liamwhite/fail
...
general: improve handling of system startup failure
2022-12-12 14:37:42 -08:00
bunnei
da58eb6208
Merge pull request #9406 from vonchenplus/topology
...
video_core: Adjust topology update logic and Adjust Clear Manage
2022-12-12 14:37:06 -08:00
Narr the Reg
3e1e6c66c0
input_common: Filter SDL GUID
2022-12-12 10:37:55 -06:00
Mai
8ef9075b1b
Merge pull request #9420 from liamwhite/aniso
...
video_core: fix off by one in anisotropic filtering amount
2022-12-12 03:34:09 +00:00
Mai
0c531ff911
Merge pull request #9419 from liamwhite/no-gl
...
cmake: make OpenGL loader optional
2022-12-11 21:09:52 +00:00
Mai
d5684dbe7d
Merge pull request #9415 from liamwhite/dc
...
memory: correct semantics of data cache management operations
2022-12-11 21:09:31 +00:00
Liam
ed37192441
memory: correct semantics of data cache management operations
2022-12-11 12:46:34 -05:00
Matías Locatti
623429a27e
Merge pull request #9409 from liamwhite/smaa2
...
video_core: Integrate SMAA
2022-12-11 01:38:28 -03:00
Liam
456322dde6
video_core: fix off by one in anisotropic filtering amount
2022-12-10 20:54:45 -05:00
Liam
8d1d6e149f
cmake: make OpenGL loader optional
...
Co-authored-by: liushuyu <liushuyu@users.noreply.github.com>
2022-12-10 15:12:27 -05:00
Mai
a5bc86a9ac
Merge pull request #9417 from liamwhite/debug-assert
...
memory: remove DEBUG_ASSERT pointer test
2022-12-10 19:08:45 +00:00
Liam
e532b74e11
audio_core: remove explicitly defaulted and implicitly deleted constructors
2022-12-10 13:05:15 -05:00
Liam
985ed1e160
memory: remove DEBUG_ASSERT pointer test
2022-12-10 13:02:38 -05:00
liamwhite
f6e705737a
Merge pull request #9412 from Saalvage/fix/trace-log-compilation
...
Fix compilation error
2022-12-09 17:03:19 -05:00
Salvage
c586ac9be2
Remove the lock entirely as per PR discussion
...
Correctly unlock mutex before its destruction
As per https://en.cppreference.com/w/cpp/thread/mutex/~mutex destroying a locked mutex is undefined behavior and MSVC++ decides to throw in this case
Swap out unique for scoped lock and readd comment
2022-12-09 16:39:59 +01:00
Salvage
0e265db873
Fix compilation error
2022-12-09 14:49:15 +01:00
Liam
5b837157bd
video_core: Integrate SMAA
...
Co-authored-by: goldenx86 <goldenx86@users.noreply.github.com>
Co-authored-by: BreadFish64 <breadfish64@users.noreply.github.com>
2022-12-08 17:17:45 -05:00
FengChen
37014e9127
video_core: Add vertex_array_instance_* sbubbed called warning
2022-12-08 23:19:31 +08:00
FengChen
1e64b5e2ec
video_core: The draw manager manages whether Clear is required.
2022-12-08 23:10:52 +08:00
FengChen
15d63c3d3d
video_core: Adjust topology update logic
2022-12-08 22:40:28 +08:00
Fernando S
41461514d6
Merge pull request #9401 from vonchenplus/draw_manager
...
video_core: Implement maxwell3d draw manager and split draw logic
2022-12-08 12:41:39 +01:00
Feng Chen
bf0b957c05
video_core: Implement maxwell3d draw manager and split draw logic
2022-12-08 10:12:19 +08:00
Morph
bfdd512787
Merge pull request #9365 from liamwhite/val
...
vulkan_common: quiet some validation errors
2022-12-06 21:08:14 -05:00
Liam
9704acb982
general: improve handling of system startup failure
2022-12-06 16:13:42 -05:00
merry
e1f5f4bdea
Merge pull request #9370 from liamwhite/break-unmapped
...
core: add option to break on unmapped access
2022-12-06 20:20:20 +00:00
Fernando S
08d4e7c7af
Merge pull request #9393 from liamwhite/more-vulkan
...
vulkan_common: further initialization tweaks
2022-12-06 17:45:08 +01:00
liamwhite
4b7e73e0a6
Merge pull request #9392 from lioncash/reporter
...
reporter: Eliminate undefined behavior in SaveErrorReport
2022-12-06 11:27:00 -05:00
liamwhite
d8534ea140
Merge pull request #9390 from lioncash/keyboard
...
applets: Extract callback types into aliases
2022-12-06 11:26:53 -05:00
liamwhite
bbdb6d391e
Merge pull request #9389 from lioncash/emumove
...
emulated_console/emulated_controller: std::move ParamPackage instances where applicable
2022-12-06 11:26:46 -05:00
liamwhite
a86af1b776
Merge pull request #9386 from lioncash/init
...
kernel: Ensure relevant class members are always initialized on construction
2022-12-06 11:26:38 -05:00
liamwhite
a225ba4cda
Merge pull request #9391 from abouvier/cmake-sdl
...
cmake: use sdl2 imported target
2022-12-06 09:58:48 -05:00
liamwhite
e86e144a7c
Merge pull request #9387 from abouvier/cmake-libusb
...
cmake: prefer system libusb
2022-12-06 09:58:37 -05:00
Lioncash
dba84458be
configure_graphics: Make SPIRV backend string translatable
...
The parenthetical needs to be translatable, like with GLASM
2022-12-06 00:13:07 -05:00
Alexandre Bouvier
f385175aa2
cmake: prefer system libusb
2022-12-06 05:30:40 +01:00
liamwhite
04779b3d2a
Merge pull request #9369 from german77/mifare
...
service: nfc: Implement mifare service
2022-12-05 22:17:32 -05:00
liamwhite
90145c424d
Merge pull request #9360 from Kelebek1/R-E-S-P-E-C-T
...
Respect render mode override
2022-12-05 22:17:22 -05:00
Liam
7e7a23363a
vulkan_common: further initialization tweaks
2022-12-05 22:06:35 -05:00
Lioncash
eadc1ae1e7
reporter: Pass by const reference where applicable
...
Same behavior, but without memory churn.
2022-12-05 21:48:42 -05:00
Lioncash
e7f9f58fa4
reporter: Eliminate undefined behavior in SaveErrorReport
...
The optionals are unconditionally dereferenced when setting the custom
error text, and in a few cases this function is called using the default
value of the optionals.
This means we'd be dereferencing uninitialized storage.
Since they're used unconditionally, we can use value_or to set a default
when storage is uninitialized.
2022-12-05 21:31:34 -05:00
Alexandre Bouvier
e6ae720c33
cmake: use sdl2 imported target
2022-12-06 01:26:30 +01:00
Lioncash
fedd857054
applets/controller: Use aliases for callbacks
2022-12-05 19:06:04 -05:00
Lioncash
d8da9a2afd
applets/error: Use aliases for callbacks
2022-12-05 19:06:04 -05:00
Lioncash
2b40cdf04f
applets/mii_edit: Use aliases for callbacks
2022-12-05 19:06:04 -05:00
Lioncash
a84676c2aa
applets/profile_select: Use aliases for callbacks
...
Deduplicates callback definitions and situates it in one place.
2022-12-05 19:06:04 -05:00
Lioncash
e26c86a6e7
applets/web_browser: Use aliases for callbacks
...
Deduplicates a lot of long callback declarations
2022-12-05 19:06:04 -05:00