mirror of
https://git.sr.ht/~eliasnaur/gio
synced 2026-07-07 10:25:37 +00:00
app: [API] refactor app.ViewEvent to support wayland
This commit changes the definition of app.ViewEvent on Unix systems to be an interface implemented by two different concrete types: X11ViewEvent and WaylandViewEvent. Each provides the necessary fields for custom rendering on its display protocol. This is a breaking change for all users of app.ViewEvent on Linux/BSD, as it now is an interface instead of a concrete type. Signed-off-by: Chris Waldon <christopher.waldon.dev@gmail.com>
This commit is contained in:
+21
-3
@@ -10,13 +10,33 @@ import (
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
type ViewEvent struct {
|
||||
// ViewEvent provides handles to the underlying window objects for the
|
||||
// current display protocol.
|
||||
type ViewEvent interface {
|
||||
implementsViewEvent()
|
||||
ImplementsEvent()
|
||||
}
|
||||
|
||||
type X11ViewEvent struct {
|
||||
// Display is a pointer to the X11 Display created by XOpenDisplay.
|
||||
Display unsafe.Pointer
|
||||
// Window is the X11 window ID as returned by XCreateWindow.
|
||||
Window uintptr
|
||||
}
|
||||
|
||||
func (X11ViewEvent) implementsViewEvent() {}
|
||||
func (X11ViewEvent) ImplementsEvent() {}
|
||||
|
||||
type WaylandViewEvent struct {
|
||||
// Display is the *wl_display returned by wl_display_connect.
|
||||
Display unsafe.Pointer
|
||||
// Surface is the *wl_surface returned by wl_compositor_create_surface.
|
||||
Surface unsafe.Pointer
|
||||
}
|
||||
|
||||
func (WaylandViewEvent) implementsViewEvent() {}
|
||||
func (WaylandViewEvent) ImplementsEvent() {}
|
||||
|
||||
func osMain() {
|
||||
select {}
|
||||
}
|
||||
@@ -46,5 +66,3 @@ func newWindow(window *callbacks, options []Option) error {
|
||||
}
|
||||
return errors.New("app: no window driver available")
|
||||
}
|
||||
|
||||
func (_ ViewEvent) ImplementsEvent() {}
|
||||
|
||||
Reference in New Issue
Block a user