GObject 信号机制——信号 Accumulator

在文档 [1] 中,从外围对 GObject 信号注册的过程进行了初步分析。生命不息,折腾不止,我们应当以  Adrian Hands 大叔为榜样。所以,本文继续解决文档 [1] 中遗留的问题,即 g_signal_new 函数的第 5 个与第 6 个参数的含义。

继续阅读

GObject 信号机制——信号注册

上一篇文档“GObject 的信号机制”只是挖了一个坑便结束了,本篇尝试填坑,不过也不敢有所保证。因为我也不确定会不会因为被 GObject 的信号内幕再次搞晕。

我们先老老实实的阅读 GObject 参考手册的“Concepts / Signal”部分,尽量多获得一些面上的认识。手册中最关键的一句话是:每一个信号在注册的时候都要与某种数据类型(包括 GObject 库中的内建类型或 GObject 子类类型)存在关联,这种数据类型的使用者需要实现信号与闭包的连接,这样在信号被发射时,闭包会被调用。这句话,意味着我们要使用 GObject 信号机制,那么就必须要完成两个步骤:第一个步骤是信号注册,主要解决信号与数据类型的关联问题;第二个步骤是信号连接,主要处理信号与闭包的连接问题。本文主要考察信号注册的大致过程。

继续阅读

函数指针、回调函数与 GObject 闭包

本文首先复习一下基于 C 语言函数指针和回调函数的概念,进而学习 GObject 闭包的用法。这些知识都与面向对象程序设计基本上没有什么关系。

继续阅读