From 85025c5f33191061b0f44f6c460cc9f841f390c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=9A=93?= Date: Thu, 20 Mar 2025 22:54:31 -0400 Subject: [PATCH] Fix `Bitmap.blt` and `Bitmap.stretch_blt` in libretro builds Whoops, I accidentally switched these two functions! --- binding-sandbox/bitmap-binding.h | 70 ++++++++++++++++---------------- binding-sandbox/wasm-rt.cpp | 2 +- 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/binding-sandbox/bitmap-binding.h b/binding-sandbox/bitmap-binding.h index 4770ebcf..91be3267 100644 --- a/binding-sandbox/bitmap-binding.h +++ b/binding-sandbox/bitmap-binding.h @@ -149,41 +149,6 @@ namespace mkxp_sandbox { } static VALUE blt(int32_t argc, wasm_ptr_t argv, VALUE self) { - SANDBOX_COROUTINE(coro, - VALUE destRectObj; - VALUE srcObj; - VALUE srcRectObj; - int opacity; - - VALUE operator()(int32_t argc, wasm_ptr_t argv, VALUE self) { - BOOST_ASIO_CORO_REENTER (this) { - destRectObj = ((VALUE *)(**sb() + argv))[0]; - srcObj = ((VALUE *)(**sb() + argv))[1]; - srcRectObj = ((VALUE *)(**sb() + argv))[2]; - if (argc > 3) { - SANDBOX_AWAIT_AND_SET(opacity, rb_num2int, ((VALUE *)(**sb() + argv))[3]); - } - - Bitmap *src = get_private_data(srcObj); - if (src != NULL) { - Rect *destRect = get_private_data(destRectObj); - Rect *srcRect = get_private_data(srcRectObj); - if (argc > 4) { - GFX_GUARD_EXC(get_private_data(self)->stretchBlt(destRect->toIntRect(), *src, srcRect->toIntRect(), opacity);); - } else { - GFX_GUARD_EXC(get_private_data(self)->stretchBlt(destRect->toIntRect(), *src, srcRect->toIntRect());); - } - } - } - - return self; - } - ) - - return sb()->bind()()(argc, argv, self); - } - - static VALUE stretch_blt(int32_t argc, wasm_ptr_t argv, VALUE self) { SANDBOX_COROUTINE(coro, int x; int y; @@ -219,6 +184,41 @@ namespace mkxp_sandbox { return sb()->bind()()(argc, argv, self); } + static VALUE stretch_blt(int32_t argc, wasm_ptr_t argv, VALUE self) { + SANDBOX_COROUTINE(coro, + VALUE destRectObj; + VALUE srcObj; + VALUE srcRectObj; + int opacity; + + VALUE operator()(int32_t argc, wasm_ptr_t argv, VALUE self) { + BOOST_ASIO_CORO_REENTER (this) { + destRectObj = ((VALUE *)(**sb() + argv))[0]; + srcObj = ((VALUE *)(**sb() + argv))[1]; + srcRectObj = ((VALUE *)(**sb() + argv))[2]; + if (argc > 3) { + SANDBOX_AWAIT_AND_SET(opacity, rb_num2int, ((VALUE *)(**sb() + argv))[3]); + } + + Bitmap *src = get_private_data(srcObj); + if (src != NULL) { + Rect *destRect = get_private_data(destRectObj); + Rect *srcRect = get_private_data(srcRectObj); + if (argc > 4) { + GFX_GUARD_EXC(get_private_data(self)->stretchBlt(destRect->toIntRect(), *src, srcRect->toIntRect(), opacity);); + } else { + GFX_GUARD_EXC(get_private_data(self)->stretchBlt(destRect->toIntRect(), *src, srcRect->toIntRect());); + } + } + } + + return self; + } + ) + + return sb()->bind()()(argc, argv, self); + } + static VALUE fill_rect(int32_t argc, wasm_ptr_t argv, VALUE self) { SANDBOX_COROUTINE(coro, Bitmap *bitmap; diff --git a/binding-sandbox/wasm-rt.cpp b/binding-sandbox/wasm-rt.cpp index 7617dec4..8716099b 100644 --- a/binding-sandbox/wasm-rt.cpp +++ b/binding-sandbox/wasm-rt.cpp @@ -27,7 +27,7 @@ #define WASM_PAGE_SIZE ((uint64_t)65536U) -#define WASM_MIN_PAGES ((uint32_t)2048U) +#define WASM_MIN_PAGES ((uint32_t)4096U) extern "C" bool wasm_rt_is_initialized(void) { return true;