maemo dbus(1)

 

 

maemo dbus(1)

2011-7-4 15:59:12

hildon-desktop 是如何使用service文件的?

通过desktop文件生存了菜单的布局

在生存菜单的时候做了如下处理

      g_signal_connect (G_OBJECT (menu_item),
          "activate",
                G_CALLBACK (hd_applications_menu_activate_app),
                button);
               
当用户点击了对应的菜单,便emit activate信号

               
hd_applications_menu_activate_app

首先找到菜单对应的desktop文件,找出service域

hd_wm_top_service

通过服务名来查找窗口

如果找不到就需要通过dbus启动服务

hd_wm_activate_service

向dbus 发出了一个 top_application的方法调用

原理如下

dbus-send --session --print-reply --dest=com.woojoy.browser /com/woojoy/browser com.woojoy.browser.top_application

如果找不到service文件,就找执行域,直接把后台进程启动。

 

查询活动的service

dbus-send --session --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.ListActivatableNames


dbus是如何获取活动service的?

查看dbus中的driver.c

bus_driver_handle_list_activatable_services

使用如下结构体来描述活动的服务

struct BusActivation
{
  int refcount;
  DBusHashTable *entries;
  DBusHashTable *pending_activations;
  char *server_address;
  BusContext *context;
  int n_pending_activations; /**< This is in fact the number of BusPendingActivationEntry,
                              * i.e. number of pending activation requests, not pending
                              * activations per se
                              */
  DBusHashTable *directories;
  DBusHashTable *environment;
};


bus_activation_list_services 也就是来遍历entries

这个entries是如何来获取的?

在/etc/dbus-1/system.conf 中指明service的路径

遍历目录下的所有文件来生存entry

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值