Skip to content

Commit

Permalink
Upadte to wlroots master commit 4b03bdc3
Browse files Browse the repository at this point in the history
  • Loading branch information
ifreund committed Jan 1, 2021
1 parent 4d90c62 commit 4902876
Show file tree
Hide file tree
Showing 7 changed files with 59 additions and 30 deletions.
6 changes: 3 additions & 3 deletions src/backend.zig
Expand Up @@ -15,9 +15,9 @@ pub const Backend = extern struct {

// backend.h

extern fn wlr_backend_autocreate(server: *wl.Server, create_renderer_func: ?wlr.Renderer.CreateFn) ?*Backend;
pub fn autocreate(server: *wl.Server, create_renderer_func: ?wlr.Renderer.CreateFn) !*Backend {
return wlr_backend_autocreate(server, create_renderer_func) orelse error.BackendCreateFailed;
extern fn wlr_backend_autocreate(server: *wl.Server) ?*Backend;
pub fn autocreate(server: *wl.Server) !*Backend {
return wlr_backend_autocreate(server) orelse error.BackendCreateFailed;
}

extern fn wlr_backend_start(backend: *Backend) bool;
Expand Down
29 changes: 19 additions & 10 deletions src/backend/session.zig
Expand Up @@ -6,17 +6,24 @@ const wl = wayland.server.wl;
pub const Device = extern struct {
fd: c_int,
dev: os.dev_t,
signal: wl.Signal(*Session),

/// Session.devices
link: wl.list.Link,

events: extern struct {
change: wl.Signal(void),
},
};

pub const Session = extern struct {
const Impl = opaque {};

pub const event = struct {
pub const Add = extern struct {
path: [*:0]const u8,
};
};

impl: *const Impl,
session_signal: wl.Signal(*Session),
active: bool,

vtnr: c_uint,
Expand All @@ -29,9 +36,12 @@ pub const Session = extern struct {

devices: wl.list.Head(Device, "link"),

server: *wl.Server,
server_destroy: wl.Listener(*wl.Server),

events: extern struct {
active: wl.Signal(void),
add_drm_card: wl.Signal(*event.Add),
destroy: wl.Signal(*Session),
},

Expand All @@ -43,20 +53,19 @@ pub const Session = extern struct {
extern fn wlr_session_destroy(session: *Session) void;
pub const destroy = wlr_session_destroy;

extern fn wlr_session_open_file(session: *Session, path: [*:0]const u8) c_int;
pub const openFile = wlr_session_open_file;
extern fn wlr_session_open_file(session: *Session, path: [*:0]const u8) ?*Device;
pub fn openFile(session: *Session, path: [*:0]const u8) !*Device {
return wlr_session_open_file(session, path) orelse error.SessionOpenFileFailed;
}

extern fn wlr_session_close_file(session: *Session, fd: c_int) void;
extern fn wlr_session_close_file(session: *Session, device: *Device) void;
pub const closeFile = wlr_session_close_file;

extern fn wlr_session_signal_add(session: *Session, fd: c_int, listener: *wl.Listener(*Session)) void;
pub const signalAdd = wlr_session_signal_add;

extern fn wlr_session_change_vt(session: *Session, vt: c_uint) bool;
pub fn changeVt(session: *Session, vt: c_uint) !void {
if (!wlr_session_change_vt(session, vt)) return error.ChangeVtFailed;
}

extern fn wlr_session_find_gpus(session: *Session, ret_len: usize, ret: [*]c_int) usize;
extern fn wlr_session_find_gpus(session: *Session, ret_len: usize, ret: [*]*Device) usize;
pub const findGpus = wlr_session_find_gpus;
};
20 changes: 4 additions & 16 deletions src/render/renderer.zig
Expand Up @@ -6,14 +6,6 @@ const wl = wayland.server.wl;
pub const Renderer = extern struct {
const Impl = opaque {};

pub const CreateFn = fn (
egl: *wlr.Egl,
platform: c_uint, // EGLenum
remote_display: ?*c_void,
config_attribs: *i32, // EGLint
visual_id: i32, // EGLint
) callconv(.C) ?*Renderer;

impl: *const Impl,
rendering: bool,
events: extern struct {
Expand All @@ -22,8 +14,7 @@ pub const Renderer = extern struct {

// wlr_renderer functions:

// TODO: int types
extern fn wlr_renderer_begin(renderer: *Renderer, width: c_int, height: c_int) void;
extern fn wlr_renderer_begin(renderer: *Renderer, width: u32, height: u32) void;
pub const begin = wlr_renderer_begin;

pub extern fn wlr_renderer_end(renderer: *Renderer) void;
Expand All @@ -47,8 +38,8 @@ pub const Renderer = extern struct {
extern fn wlr_renderer_scissor(renderer: *Renderer, box: *wlr.Box) void;
pub const scissor = wlr_renderer_scissor;

extern fn wlr_renderer_get_formats(renderer: *Renderer, len: *usize) [*]const wl.Shm.Format;
pub const getFormats = wlr_renderer_get_formats;
extern fn wlr_renderer_get_shm_texture_formats(renderer: *Renderer, len: *usize) [*]const wl.Shm.Format;
pub const getShmTextureFormats = wlr_renderer_get_shm_texture_formats;

extern fn wlr_renderer_resource_is_wl_drm_buffer(renderer: *Renderer, buffer: *wl.Buffer) bool;
pub const resourceIsWlDrmBuffer = wlr_renderer_resource_is_wl_drm_buffer;
Expand All @@ -62,7 +53,7 @@ pub const Renderer = extern struct {
pub const wlDrmBufferGetSize = wlr_renderer_wl_drm_buffer_get_size;

// TODO:
//extern fn wlr_renderer_get_dmabuf_formats(renderer: *Renderer) [*c]const struct_wlr_drm_format_set;
//extern fn wlr_renderer_get_dmabuf_texture_formats(renderer: *Renderer) [*c]const struct_wlr_drm_format_set;
//pub const getDmabufFormats = wlr_renderer_get_dmabuf_formats;

extern fn wlr_renderer_read_pixels(
Expand All @@ -87,9 +78,6 @@ pub const Renderer = extern struct {
) bool;
pub const blitDmabuf = wlr_renderer_blit_dmabuf;

extern fn wlr_renderer_format_supported(renderer: *Renderer, fmt: wl.Shm.Format) bool;
pub const formatSupported = wlr_renderer_format_supported;

extern fn wlr_renderer_get_drm_fd(renderer: *Renderer) c_int;
pub const getDrmFd = wlr_renderer_get_drm_fd;

Expand Down
3 changes: 3 additions & 0 deletions src/types/buffer.zig
Expand Up @@ -49,6 +49,9 @@ pub const ClientBuffer = extern struct {
resource_destroy: wl.Listener(*wl.Buffer),
release: wl.Listener(void),

extern fn wlr_client_buffer_get(buffer: *wlr.Buffer) ?*ClientBuffer;
pub const get = wlr_client_buffer_get;

extern fn wlr_client_buffer_import(renderer: *wlr.Renderer, resource: *wl.Buffer) ?*ClientBuffer;
pub const import = wlr_client_buffer_import;

Expand Down
6 changes: 6 additions & 0 deletions src/types/output.zig
Expand Up @@ -105,6 +105,11 @@ pub const Output = extern struct {
/// This is a bitfield of Present.flag members
flags: u32,
};

pub const Bind = extern struct {
output: *wlr.Output,
resource: *wl.Output,
};
};

const Impl = opaque {};
Expand Down Expand Up @@ -151,6 +156,7 @@ pub const Output = extern struct {
precommit: wl.Signal(*event.Precommit),
commit: wl.Signal(*event.Commit),
present: wl.Signal(*event.Present),
bind: wl.Signal(*event.Bind),
enable: wl.Signal(*Output),
mode: wl.Signal(*Output),
scale: wl.Signal(*Output),
Expand Down
12 changes: 12 additions & 0 deletions src/types/surface.zig
Expand Up @@ -57,6 +57,16 @@ pub const Surface = extern struct {
precommit: ?fn (surface: *Surface) callconv(.C) void,
};

pub const Output = extern struct {
surface: *wlr.Surface,
output: *wlr.Output,

// Surface.current_outputs
link: wl.list.Link,
bind: wl.Listener(*wlr.Output.event.Bind),
destroy: wl.Listener(*wlr.Output),
};

resource: *wl.Surface,
renderer: *wlr.Renderer,

Expand Down Expand Up @@ -85,6 +95,8 @@ pub const Surface = extern struct {
subsurfaces: wl.list.Head(Subsurface, "parent_link"),
subsurface_pending_list: wl.list.Head(Subsurface, "parent_pending_link"),

current_outputs: wl.list.Head(Surface.Output, "link"),

renderer_destroy: wl.Listener(*wlr.Renderer),

data: usize,
Expand Down
13 changes: 12 additions & 1 deletion src/xwayland.zig
Expand Up @@ -13,6 +13,14 @@ const xcb = struct {
const Pixmap = u32;
const Window = u32;
const Atom = u32;

const StackMode = extern enum {
above = 0,
below = 1,
top_if = 2,
bottom_if = 3,
opposite = 4,
};
};

pub const Xwm = opaque {};
Expand All @@ -33,7 +41,7 @@ pub const XwaylandServer = extern struct {

pid: os.pid_t,
client: ?*wl.Client,
sigusr1_source: ?*wl.EventSource,
pipe_source: ?*wl.EventSource,
wm_fd: [2]c_int,
wl_fd: [2]c_int,

Expand Down Expand Up @@ -259,6 +267,9 @@ pub const XwaylandSurface = extern struct {
extern fn wlr_xwayland_surface_activate(surface: *XwaylandSurface, activated: bool) void;
pub const activate = wlr_xwayland_surface_activate;

extern fn wlr_xwayland_surface_restack(surface: *XwaylandSurface, sibling: *XwaylandSurface, mode: xcb.StackMode) void;
pub const restack = wlr_xwayland_surface_restack;

extern fn wlr_xwayland_surface_configure(surface: *XwaylandSurface, x: i16, y: i16, width: u16, height: u16) void;
pub const configure = wlr_xwayland_surface_configure;

Expand Down

0 comments on commit 4902876

Please sign in to comment.