上一篇介绍的是stable版的协议,本文介绍unstable版的协议。

窗口部分是一样的。

我们使用新协议的对象

struct zxdg_shell_v6 *xdg_shell;
struct zxdg_surface_v6 *shell_surface;
struct zxdg_toplevel_v6 *toplevel;

创建新对象

shell_surface = zxdg_shell_v6_get_xdg_surface(xdg_shell, surface);
if (shell_surface == NULL)
{fprintf(stderr, "Can't create shell surface\n");exit(1);
}
else
{fprintf(stderr, "Created shell surface\n");
}
toplevel = zxdg_surface_v6_get_toplevel(shell_surface);
zxdg_surface_v6_add_listener(shell_surface,&surface_listener,NULL);

需要监听新的注册事件

static void
global_registry_handler(void *data, struct wl_registry *registry,uint32_t id, const char *interface, uint32_t version)
{if (strcmp(interface, "wl_compositor") == 0){BIND_WL_REG(registry, compositor, id, &wl_compositor_interface, 1);}else if (strcmp(interface, zxdg_shell_v6_interface.name) == 0){BIND_WL_REG(registry, xdg_shell, id, &zxdg_shell_v6_interface, 1);}else if (strcmp(interface, "wl_shm") == 0){BIND_WL_REG(registry, shm, id, &wl_shm_interface, 1);wl_shm_add_listener(shm, &shm_listener, NULL);}
}

窗口监听和处理

static void handle_configure(void *data, struct zxdg_surface_v6 *surface, uint32_t serial) {zxdg_surface_v6_ack_configure(surface, serial);
}static const struct zxdg_surface_v6_listener surface_listener = {.configure = handle_configure
};

编译

协议以xml格式提供,我们在使用时要把它生成为代码。

WAYLAND_FLAGS = $(shell pkg-config wayland-client --cflags --libs)
WAYLAND_PROTOCOLS_DIR = $(shell pkg-config wayland-protocols --variable=pkgdatadir)
WAYLAND_SCANNER = $(shell pkg-config --variable=wayland_scanner wayland-scanner)XDG_SHELL_PROTOCOL = $(WAYLAND_PROTOCOLS_DIR)/unstable/xdg-shell/xdg-shell-unstable-v6.xmlHEADERS=xdg-shell-unstable-v6-protocol.h
SOURCES=xdg-shell-unstable-v6-protocol.call: $(HEADERS) $(SOURCES)gcc -o shell_unstable shell_unstable.c $(SOURCES) -I. -lwayland-client -lwayland-egl -lEGL -lGLxdg-shell-unstable-v6-protocol.h:$(WAYLAND_SCANNER) client-header $(XDG_SHELL_PROTOCOL) xdg-shell-unstable-v6-protocol.hxdg-shell-unstable-v6-protocol.c:$(WAYLAND_SCANNER) private-code $(XDG_SHELL_PROTOCOL) xdg-shell-unstable-v6-protocol.cclean:rm -rf shell_stable $(HEADERS) $(SOURCES)

理论上显示效果和之前的窗口一样。但是我编译成功了,没有运行成功。

EGL版本只是替换了窗口显示部分,其他的代码一样。

完整代码在Wayland_Frashman中的11.shell_unstable、11.shell_unstable_EGL下。

本文首发于:Wayland入门11:shell unstable协议

Wayland入门11:shell unstable协议相关推荐

  1. 脑残式网络编程入门(三):HTTP协议必知必会的一些知识

    为什么80%的码农都做不了架构师?>>>    本文原作者:"竹千代",原文由"玉刚说"写作平台提供写作赞助,原文版权归"玉刚说&q ...

  2. GPS 入门 4 —— GPS NMEA-0183协议 [转]

    GPS 入门 4 -- GPS NMEA-0183协议 [转] (2008-10-11 18:42:39) <script> var $tag='gps,nmea-0183协议,超级终端, ...

  3. Objective-C 入门(七)协议 protocol(JAVA中的接口)

    Objective-C 入门(七)协议 protocol(JAVA中的接口) 接口的作用想必大家都比较了解 OV中的 protocol 相比接口作用相似 语法稍有不同 1.先来看声明一个协议 在创建文 ...

  4. Cesium入门11 - Interactivity - 交互性

    Cesium入门11 - Interactivity - 交互性 Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ ...

  5. IEEE 802.11 RTS/CTS 协议

    IEEE 802.11 RTS/CTS即RTS/CTS协议(Request To Send/Clear To Send)即请求发送/清除发送协议是被802.11无线网络协议采用的一种用来减少由隐藏节点 ...

  6. 11种物联网协议简介,如WiFi、蓝牙、ZigBee、蜂窝等

    一.背景 1.电子工程师和物联网(IoT)的产品和系统的应用程序开发人员都有一个几乎令人迷惑的连接选项.那就是自己的项目选用什么协议. 2.许多通信技术是众所周知的,如WiFi,蓝牙,ZigBee和2 ...

  7. Wayland入门15:键盘输入

    上一篇介绍了鼠标的相关操作,本文介绍键盘的相关操作. 使用的是标准的键盘库xkb,官网为:https://www.xkbcommon.org/. 先把上一篇的鼠标操作的部分复制过来. 注册并绑定键盘相 ...

  8. Wayland入门12:输入设备管理器

    在 Wayland入门8:获取全局对象 中我们介绍了Wayland全局对象: wl_display:表示与服务器的连接. wl_registry:全局对象注册表,全局对象需要通过它获取. wl_com ...

  9. 一天学会shell语言,shell教程,shell简单入门,shell中文文档

        shell语言是一门linux系统下的工具语言,主要用于写一些linux系统下的操作命令,实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核.或者直接理解为shell命 ...

最新文章

  1. 清华大学开源迁移学习算法库:基于PyTorch实现,支持轻松调用已有算法
  2. 错误---获取Input的值为空字符串
  3. 微软私有云分享(R2)5-域升级造成Hyper-V主机无法实时迁移
  4. 安装两个硬盘时应如何跳线?
  5. RabbitMQ(二)工作队列
  6. 【工业控制】OmniCal软件安装和使用详解
  7. 微软开源基于.NET Core的量子开发工具包 QDK
  8. POJ2942-Knights of the Round Table【tarjan】
  9. paip.myeclipse7 java webservice 最佳实践o228
  10. 3D开发-AR.js Nginx HTTPS服务搭建
  11. baacloud无法连接到_加入 Beta 版“Baacloud” - TestFlight - Apple
  12. 锐浪报表开发Web版
  13. Eclipse2020下载安装教程详细
  14. Facebook,Twitter,Linkedin分享
  15. 2019年 腾讯校园招聘JAVA
  16. jeecg-boot 官方文档v2.0快速开始之hello world 前端教程
  17. Jquery颜色选择插件使用
  18. 什么是数据中台系统 - whale帷幄
  19. Innovation - Face++ - 当人脸识别遇上互联网
  20. chrome浏览器虚拟摄像头

热门文章

  1. redis之二十八 -- Redis实战:Redis 主从同步
  2. VBA CurrentRegion属性示例
  3. 天猫店群是什么意思?天猫店群和传统模式相比有什么优势?
  4. C语言:用switch语句求分段函数
  5. NXP iMX7 异构双核心开发调试
  6. 华为鸿蒙宣传图,VIVO联动华为?官方宣传图出现华为智联,为鸿蒙合作埋下伏笔...
  7. Maven的生命周期
  8. mat 服务器分析大堆,本地打开
  9. 北科天绘 16线3维激光雷达开发教程
  10. python实现计算器功能键介绍_python实现计算器功能