mirror of
https://github.com/AynaLivePlayer/AynaLivePlayer.git
synced 2025-12-11 20:58:13 +08:00
24 lines
582 B
Go
24 lines
582 B
Go
package xfyne
|
|
|
|
import (
|
|
"fyne.io/fyne/v2"
|
|
"github.com/go-gl/glfw/v3.3/glfw"
|
|
"reflect"
|
|
"unsafe"
|
|
)
|
|
|
|
// getGlfwWindow returns the glfw.Window pointer from a fyne.Window.
|
|
// very unsafe and ugly hacks. but it works.
|
|
func getGlfwWindow(window fyne.Window) *glfw.Window {
|
|
rv := reflect.ValueOf(window)
|
|
if rv.Type().String() != "*glfw.window" {
|
|
return nil
|
|
}
|
|
rv = rv.Elem()
|
|
var glfwWindowPtr uintptr = rv.FieldByName("viewport").Pointer()
|
|
for glfwWindowPtr == 0 {
|
|
glfwWindowPtr = rv.FieldByName("viewport").Pointer()
|
|
}
|
|
return (*glfw.Window)(unsafe.Pointer(glfwWindowPtr))
|
|
}
|