Skip to content

Commit 7324ab3

Browse files
committed
letsplay_retro_frontend: Move log helper to frontend/ module
Also, "namespace" the C exports. Not really for any particular reason but it's nicer to give more unique names I suppose.
1 parent 01fe982 commit 7324ab3

File tree

7 files changed

+29
-41
lines changed

7 files changed

+29
-41
lines changed

crates/letsplay_retro_frontend/build.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ fn main() {
77
.emit_rerun_if_env_changed(true)
88
.cpp(true)
99
.std("c++20")
10-
.file("src/libretro_log_helper.cpp")
11-
.compile("retro_log_helper");
10+
.file("src/frontend/log_helper.cpp")
11+
.compile("letsplay_retro_frontend_cxx");
1212
}

crates/letsplay_retro_frontend/src/frontend/callbacks.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
//! Callbacks for libretro
2+
use crate::{frontend::*, util};
23
use letsplay_libretro_sys::*;
3-
use crate::{frontend::*, libretro_log, util};
44

55
use std::ffi;
66

@@ -26,7 +26,7 @@ pub(crate) unsafe extern "C" fn environment_callback(
2626
) -> bool {
2727
match environment_command {
2828
ENVIRONMENT_GET_LOG_INTERFACE => {
29-
*(data as *mut LogCallback) = libretro_log::LOG_INTERFACE.clone();
29+
*(data as *mut LogCallback) = super::log::LOG_INTERFACE.clone();
3030
return true;
3131
}
3232

crates/letsplay_retro_frontend/src/libretro_log.rs renamed to crates/letsplay_retro_frontend/src/frontend/log.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use tracing::*;
55
#[allow(dead_code)] // This *is* used; just not in Rust code
66
#[no_mangle]
77
/// This recieves log messages from our C++ helper code, and pulls them out into Tracing messages.
8-
pub extern "C" fn libretro_log_recieve(level: LogLevel, buf: *const ffi::c_char) {
8+
pub extern "C" fn letsplay_retro_frontend_log(level: LogLevel, buf: *const ffi::c_char) {
99
// SAFETY: This pointer should never be null since it comes from the address of a C++ stack variable.
1010
// we really only should get UTF-8 errors here in the case a core spits out something invalid.
1111
unsafe {
@@ -42,7 +42,7 @@ extern "C" {
4242
// because libretro_sys doesn't want it, and additionally,
4343
// that requires nightly Rust to even do, which defeats the purpose
4444
// of moving it into a helper.
45-
fn libretro_log(level: LogLevel, fmt: *const ffi::c_char);
45+
fn letsplay_retro_frontend_libretro_log(level: LogLevel, fmt: *const ffi::c_char);
4646
}
4747

48-
pub static LOG_INTERFACE: LogCallback = LogCallback { log: libretro_log };
48+
pub static LOG_INTERFACE: LogCallback = LogCallback { log: letsplay_retro_frontend_libretro_log };

crates/letsplay_retro_frontend/src/libretro_log_helper.cpp renamed to crates/letsplay_retro_frontend/src/frontend/log_helper.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ using LibRetroLogLevel = std::uint32_t;
77
extern "C" {
88

99
/// This function is defined in Rust and recieves our formatted log messages.
10-
void libretro_log_recieve(LibRetroLogLevel level, const char* buf);
10+
void letsplay_retro_frontend_log(LibRetroLogLevel level, const char* buf);
1111

1212
/// This helper function is given to Rust code to implement the libretro logging
1313
/// (because it's a C-varadic function; that requires nightly/unstable Rust)
1414
///
1515
/// By implementing it in C++, we can dodge all that and keep using stable rustc.
16-
void libretro_log(LibRetroLogLevel level, const char* format, ...) {
16+
void letsplay_retro_frontend_libretro_log(LibRetroLogLevel level, const char* format, ...) {
1717
char buf[512]{};
1818
va_list val;
1919

@@ -30,6 +30,6 @@ extern "C" {
3030
buf[n-1] = '\0';
3131

3232
// Call the Rust-side reciever.
33-
return libretro_log_recieve(level, &buf[0]);
33+
return letsplay_retro_frontend_log(level, &buf[0]);
3434
}
3535
}

crates/letsplay_retro_frontend/src/frontend/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@ mod core_variable;
88
pub use core_variable::*;
99

1010
mod callbacks;
11+
mod log;
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
//! A libretro frontend as a reusable library crate.
22
3-
mod libretro_log;
4-
53
pub mod input_devices;
64
mod util;
75

@@ -11,3 +9,6 @@ pub mod result;
119
// re-export some of our useful interface
1210
pub use frontend::{CoreVariable, Frontend, FrontendInterface};
1311
pub use result::*;
12+
13+
// re-export sys crate
14+
pub use letsplay_libretro_sys as sys;

crates/retrodemo/src/app.rs

Lines changed: 15 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use letsplay_core::{sleep, Size, Surface};
1111
use letsplay_retro_frontend::{
1212
frontend::{Frontend, FrontendInterface, HwGlInitData},
1313
input_devices::{InputDevice, RetroPad},
14-
libretro_sys_new,
14+
sys,
1515
};
1616

1717
use minifb::Key;
@@ -203,68 +203,54 @@ impl FrontendInterface for App {
203203
for key in &keys {
204204
match key {
205205
Key::Backslash => {
206-
self.pad
207-
.press_button(libretro_sys_new::DEVICE_ID_JOYPAD_SELECT, None);
206+
self.pad.press_button(sys::DEVICE_ID_JOYPAD_SELECT, None);
208207
}
209208
Key::Enter => {
210-
self.pad
211-
.press_button(libretro_sys_new::DEVICE_ID_JOYPAD_START, None);
209+
self.pad.press_button(sys::DEVICE_ID_JOYPAD_START, None);
212210
}
213211
Key::Up => {
214-
self.pad
215-
.press_button(libretro_sys_new::DEVICE_ID_JOYPAD_UP, None);
212+
self.pad.press_button(sys::DEVICE_ID_JOYPAD_UP, None);
216213
}
217214
Key::Down => {
218-
self.pad
219-
.press_button(libretro_sys_new::DEVICE_ID_JOYPAD_DOWN, None);
215+
self.pad.press_button(sys::DEVICE_ID_JOYPAD_DOWN, None);
220216
}
221217
Key::Left => {
222-
self.pad
223-
.press_button(libretro_sys_new::DEVICE_ID_JOYPAD_LEFT, None);
218+
self.pad.press_button(sys::DEVICE_ID_JOYPAD_LEFT, None);
224219
}
225220
Key::Right => {
226-
self.pad
227-
.press_button(libretro_sys_new::DEVICE_ID_JOYPAD_RIGHT, None);
221+
self.pad.press_button(sys::DEVICE_ID_JOYPAD_RIGHT, None);
228222
}
229223

230224
Key::S => {
231-
self.pad
232-
.press_button(libretro_sys_new::DEVICE_ID_JOYPAD_B, None);
225+
self.pad.press_button(sys::DEVICE_ID_JOYPAD_B, None);
233226
}
234227

235228
Key::A => {
236-
self.pad
237-
.press_button(libretro_sys_new::DEVICE_ID_JOYPAD_A, None);
229+
self.pad.press_button(sys::DEVICE_ID_JOYPAD_A, None);
238230
}
239231

240232
Key::Q => {
241-
self.pad
242-
.press_button(libretro_sys_new::DEVICE_ID_JOYPAD_X, None);
233+
self.pad.press_button(sys::DEVICE_ID_JOYPAD_X, None);
243234
}
244235

245236
Key::W => {
246-
self.pad
247-
.press_button(libretro_sys_new::DEVICE_ID_JOYPAD_Y, None);
237+
self.pad.press_button(sys::DEVICE_ID_JOYPAD_Y, None);
248238
}
249239

250240
Key::LeftCtrl => {
251-
self.pad
252-
.press_button(libretro_sys_new::DEVICE_ID_JOYPAD_L, None);
241+
self.pad.press_button(sys::DEVICE_ID_JOYPAD_L, None);
253242
}
254243

255244
Key::LeftShift => {
256-
self.pad
257-
.press_button(libretro_sys_new::DEVICE_ID_JOYPAD_L2, None);
245+
self.pad.press_button(sys::DEVICE_ID_JOYPAD_L2, None);
258246
}
259247

260248
Key::LeftAlt => {
261-
self.pad
262-
.press_button(libretro_sys_new::DEVICE_ID_JOYPAD_R, None);
249+
self.pad.press_button(sys::DEVICE_ID_JOYPAD_R, None);
263250
}
264251

265252
Key::Z => {
266-
self.pad
267-
.press_button(libretro_sys_new::DEVICE_ID_JOYPAD_R2, None);
253+
self.pad.press_button(sys::DEVICE_ID_JOYPAD_R2, None);
268254
}
269255

270256
_ => {}

0 commit comments

Comments
 (0)