mirror of
https://github.com/zoriya/zig-wayland.git
synced 2025-12-06 07:06:12 +00:00
scanner: use destructor event annotations
Make use of destructor annotations on events to generate more robust server code. It's now impossible to forget e.g. the required wl.Callback.destroy() call after wl.Callback.sendDone() since now there is no wl.Callback.sendDone(), only wl.Callback.destroySendDone().
This commit is contained in:
@@ -866,7 +866,11 @@ const Message = struct {
|
||||
fn emitFn(message: Message, side: Side, writer: anytype, interface: Interface, opcode: usize) !void {
|
||||
try writer.writeAll("pub fn ");
|
||||
if (side == .server) {
|
||||
if (message.kind == .destructor) {
|
||||
try writer.print("destroySend{}", .{titleCase(message.name)});
|
||||
} else {
|
||||
try writer.print("send{}", .{titleCase(message.name)});
|
||||
}
|
||||
} else {
|
||||
try writer.print("{}", .{camelCase(message.name)});
|
||||
}
|
||||
@@ -962,6 +966,7 @@ const Message = struct {
|
||||
const args = if (message.args.len > 0) "&_args" else "null";
|
||||
if (side == .server) {
|
||||
try writer.print("_resource.postEvent({}, {s});", .{ opcode, args });
|
||||
if (message.kind == .destructor) try writer.writeAll("_resource.destroy();");
|
||||
} else switch (message.kind) {
|
||||
.normal, .destructor => {
|
||||
try writer.print("_proxy.marshal({}, {s});", .{ opcode, args });
|
||||
|
||||
Reference in New Issue
Block a user