gg: fire resize event before init if necessary on Android (#14725)
parent
c6b1c8d07a
commit
f58e5a94c2
|
@ -222,6 +222,26 @@ fn gg_init_sokol_window(user_data voidptr) {
|
||||||
ctx.timage_pip = sgl.make_pipeline(&pipdesc)
|
ctx.timage_pip = sgl.make_pipeline(&pipdesc)
|
||||||
//
|
//
|
||||||
if ctx.config.init_fn != voidptr(0) {
|
if ctx.config.init_fn != voidptr(0) {
|
||||||
|
$if android {
|
||||||
|
// NOTE on Android sokol can emit resize events *before* the init function is
|
||||||
|
// called (Android has to initialize a lot more through the Activity system to
|
||||||
|
// reach a valid coontext) and thus the user's code will miss the resize event.
|
||||||
|
// To prevent this we emit a custom window resize event, if the screen size has
|
||||||
|
// changed meanwhile.
|
||||||
|
win_size := ctx.window_size()
|
||||||
|
if ctx.width != win_size.width || ctx.height != win_size.height {
|
||||||
|
ctx.width = win_size.width
|
||||||
|
ctx.height = win_size.height
|
||||||
|
if ctx.config.resized_fn != voidptr(0) {
|
||||||
|
e := Event{
|
||||||
|
typ: .resized
|
||||||
|
window_width: ctx.width
|
||||||
|
window_height: ctx.height
|
||||||
|
}
|
||||||
|
ctx.config.resized_fn(&e, ctx.user_data)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
ctx.config.init_fn(ctx.user_data)
|
ctx.config.init_fn(ctx.user_data)
|
||||||
}
|
}
|
||||||
// Create images now that we can do that after sg is inited
|
// Create images now that we can do that after sg is inited
|
||||||
|
|
Loading…
Reference in New Issue