Re: osso, muali , dbus and Qt closeEvent()s
Haloo! On Tue, 2009-03-24 at 18:49 +0100, ext David Greaves wrote: Kimmo Hämäläinen wrote: On Mon, 2009-03-23 at 14:44 +0100, ext David Greaves wrote: Hi Crossposting as I think this is a maemo-dev question of interest to Qt devs :) I am having a problem with my Qt applications and the osso window manager. Essentially the window manager is doing a sigkill which doesn't allow Qt to emit a closeEvent(). You mean D-Bus daemon is killing you 20-30s after you are D-Bus activated? No. I know about that one :) ah, and as I write this I see Antonio has solved it :) \o/ But we still have issues Maybe looking at this example helps: https://garage.maemo.org/svn/maemoexamples/tags/maemo_4.1/maemopad/ Yes, used that - happy with osso_initialize() I actually would like to know what osso_initialize() should do so we can do the right things in a Qt app though. And your name appears a lot in the source Kimmo :) The code is not that hard to follow, just take a look. (Btw. most of the code/API was not written by me.) Basically it just connects to D-Bus busses and allows further use of libosso functions to abstract some D- Bus messaging/signals. Digging into libosso and libossowm/osso-rpc.c I find #define HILDON_DESKTOP_SERVICE com.nokia.hildon-desktop #define HDWM_STARTUP_NOTIFICATION_IFACE com.nokia.hildon.hdwm.startupnotification #define HDWM_OBJECT_PATH/com/nokia/hildon/hdwm #define HDWM_STARTUP_NOTIFICATION_STARTING starting You don't need this. It's just for the Loading... banner in Diablo. OK - but do you have a list of things that we should do to make Qt equivalent to gtk? Gtk does not use Libosso :) I seem to recall things like dbus messages on low memory and others. Are these documented? Check osso-hw.c. Code is still in SVN (login: guest/guest): https://stage.maemo.org/svn/maemo/projects/haf/trunk/libosso/src/ The banner would be nice - but the dbus services listed above don't seem to be correct - and I can't find them using a dbus introspect (qdbusviewer) ie this bit (from original email) We don't have that in Fremantle. We have a new service for starting applications in hildon-desktop. You can learn these API things from http://www7.connecting.nokia.com/nmp/osso/ossodm.nsf/WebAllByID2/DSD07052-EN (currently in Nokia intranet only) Message:Method starting with signature on interface com.nokia.hildon.hdwm.startupnotification doesn't exist I installed qdbusmonitor and com.nokia.hildon-desktop doesn't provide hdwm.startupnotification or starting Nor do I see it on the dbus-monitor --session when my gtk app runs. Are you in a postion to help us write the Qt equivalent of osso_initialize() and help make Qt == Gtk As I said, Hildon widgets and Gtk do not use libosso at all (it would be quite ugly since libosso depends on D-Bus connections). BR; Kimmo David ___ maemo-developers mailing list maemo-developers@maemo.org https://lists.maemo.org/mailman/listinfo/maemo-developers
Re: osso, muali , dbus and Qt closeEvent()s
Kimmo Hämäläinen wrote: Haloo! Hi The code is not that hard to follow, just take a look. (Btw. most of the code/API was not written by me.) Basically it just connects to D-Bus busses and allows further use of libosso functions to abstract some D- Bus messaging/signals. OK. Searching for dbus interfaces etc will probably help here. OK - but do you have a list of things that we should do to make Qt equivalent to gtk? Gtk does not use Libosso :) I meant gtk apps need to use osso-initialize() or they just don't work. Since libosso uses glib, I expect that's not really right for Qt apps. In particular I think osso-init.c calls glib setups that seem to hook into the glib context and I think the glib main loop - not used in Qt apps. eg line 503 in osso-init.c calls dbus_connection_setup_with_g_main() which: Sets the watch and timeout functions of a DBusConnection to integrate the connection with the GLib main loop. see: http://dbus.freedesktop.org/doc/api/html/group__DBusGLib.html#ga754eed235cc2b8153bd8f824b687d9e so libosso, as it stands, isn't suitable for Qt apps unless I'm confused :) I seem to recall things like dbus messages on low memory and others. Are these documented? Check osso-hw.c. Code is still in SVN (login: guest/guest): https://stage.maemo.org/svn/maemo/projects/haf/trunk/libosso/src/ Good pointer... yep, things like: com.nokia.dsme.signal shutdown_ind and save_unsaved_data_ind We don't want Qt apps ignoring these do we? The banner would be nice - but the dbus services listed above don't seem to be correct - and I can't find them using a dbus introspect (qdbusviewer) ie this bit (from original email) We don't have that in Fremantle. Currently I'm looking at Diablo... We have a new service for starting applications in hildon-desktop. You can learn these API things from http://www7.connecting.nokia.com/nmp/osso/ossodm.nsf/WebAllByID2/DSD07052-EN (currently in Nokia intranet only) Ah, I don't have that - can you post it? As I said, Hildon widgets and Gtk do not use libosso at all (it would be quite ugly since libosso depends on D-Bus connections). agreed - I am not sure how best to proceed with Qt - one of the trolls (I think) suggested extending QSession. David -- Don't worry, you'll be fine; I saw it work in a cartoon once... ___ maemo-developers mailing list maemo-developers@maemo.org https://lists.maemo.org/mailman/listinfo/maemo-developers
Re: osso, muali , dbus and Qt closeEvent()s
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 David Greaves wrote: I meant gtk apps need to use osso-initialize() or they just don't work. Since libosso uses glib, I expect that's not really right for Qt apps. In particular I think osso-init.c calls glib setups that seem to hook into the glib context and I think the glib main loop - not used in Qt apps. eg line 503 in osso-init.c calls dbus_connection_setup_with_g_main() which: Sets the watch and timeout functions of a DBusConnection to integrate the connection with the GLib main loop. see: http://dbus.freedesktop.org/doc/api/html/group__DBusGLib.html#ga754eed235cc2b8153bd8f824b687d9e so libosso, as it stands, isn't suitable for Qt apps unless I'm confused :) Actually Qt has supported GLib context stuff since 4.2 (IIRC), so libosso is suitable. That doesn't say that it's practical or nice, but it should work. - -- Santtu -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.9 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAknKghEACgkQX9Rc0+po4p3zUQCgmZLaGy3jTDm3YuCbkuh7OZE4 2J4An3avfLa5Elu8eo94IbW1srViA8aw =ozXP -END PGP SIGNATURE- ___ maemo-developers mailing list maemo-developers@maemo.org https://lists.maemo.org/mailman/listinfo/maemo-developers
Re: osso, muali , dbus and Qt closeEvent()s
Hi, IMHO using the Qt D-Bus API to rewrite some parts of libosso is more easy that resolve the symobls, load and use libosso in Qt. Kimmo said adding D-Bus dependencies in the widget is ugly, I agree with him.. but... is this also true for the QStatusBar? In Qt we have a statusBar that manages and displays messages. Currently this status bar is hidden just because we don't have it in Hildon. I don't compiled out in order to preserve the compatibility with the Qt Desktop application. Adding D-Bus into the status bar, we can display messages using hildon passive notification dialogs just calling void QStatusBar::showMessage ( const QString message, int timeout = 0 ). Is it cool? Any comment is welcome. Cheers, Antonio On Wed, Mar 25, 2009 at 9:12 PM, Santtu Lakkala i...@inz.fi wrote: -BEGIN PGP SIGNED MESSAGE- Hash: SHA1 David Greaves wrote: I meant gtk apps need to use osso-initialize() or they just don't work. Since libosso uses glib, I expect that's not really right for Qt apps. In particular I think osso-init.c calls glib setups that seem to hook into the glib context and I think the glib main loop - not used in Qt apps. eg line 503 in osso-init.c calls dbus_connection_setup_with_g_main() which: Sets the watch and timeout functions of a DBusConnection to integrate the connection with the GLib main loop. see: http://dbus.freedesktop.org/doc/api/html/group__DBusGLib.html#ga754eed235cc2b8153bd8f824b687d9e so libosso, as it stands, isn't suitable for Qt apps unless I'm confused :) Actually Qt has supported GLib context stuff since 4.2 (IIRC), so libosso is suitable. That doesn't say that it's practical or nice, but it should work. - -- Santtu -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.9 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAknKghEACgkQX9Rc0+po4p3zUQCgmZLaGy3jTDm3YuCbkuh7OZE4 2J4An3avfLa5Elu8eo94IbW1srViA8aw =ozXP -END PGP SIGNATURE- ___ maemo-developers mailing list maemo-developers@maemo.org https://lists.maemo.org/mailman/listinfo/maemo-developers -- Isaac Asimov - I do not fear computers. I fear the lack of them. ___ maemo-developers mailing list maemo-developers@maemo.org https://lists.maemo.org/mailman/listinfo/maemo-developers
Re: osso, muali , dbus and Qt closeEvent()s
It seems to me that the hildon 'platform' uses dbus and if we have some widgets that are designed to interact with the platform environment (like notifiers or session) then, when built for that platform, they can depend on platform specific things. so yes, I thing showMessage should use dbus for WS_HILDON David Antonio Aloisio wrote: Hi, IMHO using the Qt D-Bus API to rewrite some parts of libosso is more easy that resolve the symobls, load and use libosso in Qt. Kimmo said adding D-Bus dependencies in the widget is ugly, I agree with him.. but... is this also true for the QStatusBar? In Qt we have a statusBar that manages and displays messages. Currently this status bar is hidden just because we don't have it in Hildon. I don't compiled out in order to preserve the compatibility with the Qt Desktop application. Adding D-Bus into the status bar, we can display messages using hildon passive notification dialogs just calling void QStatusBar::showMessage ( const QString message, int timeout = 0 ). Is it cool? Any comment is welcome. Cheers, Antonio On Wed, Mar 25, 2009 at 9:12 PM, Santtu Lakkala i...@inz.fi wrote: David Greaves wrote: I meant gtk apps need to use osso-initialize() or they just don't work. Since libosso uses glib, I expect that's not really right for Qt apps. In particular I think osso-init.c calls glib setups that seem to hook into the glib context and I think the glib main loop - not used in Qt apps. eg line 503 in osso-init.c calls dbus_connection_setup_with_g_main() which: Sets the watch and timeout functions of a DBusConnection to integrate the connection with the GLib main loop. see: http://dbus.freedesktop.org/doc/api/html/group__DBusGLib.html#ga754eed235cc2b8153bd8f824b687d9e so libosso, as it stands, isn't suitable for Qt apps unless I'm confused :) Actually Qt has supported GLib context stuff since 4.2 (IIRC), so libosso is suitable. That doesn't say that it's practical or nice, but it should work. ___ maemo-developers mailing list maemo-developers@maemo.org https://lists.maemo.org/mailman/listinfo/maemo-developers -- Isaac Asimov - I do not fear computers. I fear the lack of them. -- Don't worry, you'll be fine; I saw it work in a cartoon once... ___ maemo-developers mailing list maemo-developers@maemo.org https://lists.maemo.org/mailman/listinfo/maemo-developers
Re: osso, muali , dbus and Qt closeEvent()s
On Mon, 2009-03-23 at 14:44 +0100, ext David Greaves wrote: Hi Crossposting as I think this is a maemo-dev question of interest to Qt devs :) I am having a problem with my Qt applications and the osso window manager. Essentially the window manager is doing a sigkill which doesn't allow Qt to emit a closeEvent(). You mean D-Bus daemon is killing you 20-30s after you are D-Bus activated? Maybe looking at this example helps: https://garage.maemo.org/svn/maemoexamples/tags/maemo_4.1/maemopad/ A gtk app calls osso_initialize() which amongst other things registers a service name to the DBus.freedestop.org service. I've been through osso-init.c and osso-rpc.c to try and figure it out but, whilst I've made progress, I've not finished. So far I have: * added an entry into the desktop file for X-Osso-Service=com.dgreaves.shopper * created : /usr/share/dbus-1/services/com.dgreaves.shopper.service * added a QDBusConnection::sessionBus().interface()-registerService (name, 1 ); and connect(iface, SIGNAL(serviceOwnerChanged(QString,QString,QString)), this, SLOT(serviceOwnerChanged(QString,QString,QString))); dbus-monitor is showing very similar messages for gtk and my Qt apps now. I've hooked serviceOwnerChanged and try to send out a ReleaseName to org.freedesktop.DBus. However I'm still getting killed. Digging into libosso and libossowm/osso-rpc.c I find #define HILDON_DESKTOP_SERVICE com.nokia.hildon-desktop #define HDWM_STARTUP_NOTIFICATION_IFACE com.nokia.hildon.hdwm.startupnotification #define HDWM_OBJECT_PATH/com/nokia/hildon/hdwm #define HDWM_STARTUP_NOTIFICATION_STARTING starting You don't need this. It's just for the Loading... banner in Diablo. This failed as Name:org.freedesktop.DBus.Error.UnknownMethod Message:Method starting with signature on interface com.nokia.hildon.hdwm.startupnotification doesn't exist I installed qdbusmonitor and com.nokia.hildon-desktop doesn't provide hdwm.startupnotification or starting Nor do I see it on the dbus-monitor --session when my gtk app runs. Any pointers? David ___ maemo-developers mailing list maemo-developers@maemo.org https://lists.maemo.org/mailman/listinfo/maemo-developers
Re: osso, muali , dbus and Qt closeEvent()s
Hi, I fixed the closeEvent issue and now it works fine. The problem was inside Qt and it was due to an initialization of a QVarLengthArray for some Atom values. Now Qt sets the WM properties correctly and then also the WM_DELETE_WINDOW one. The closeEvents are now sent correctly. Cheers, Antonio. 2009/3/24 Kimmo Hämäläinen kimmo.hamalai...@nokia.com On Mon, 2009-03-23 at 14:44 +0100, ext David Greaves wrote: Hi Crossposting as I think this is a maemo-dev question of interest to Qt devs :) I am having a problem with my Qt applications and the osso window manager. Essentially the window manager is doing a sigkill which doesn't allow Qt to emit a closeEvent(). You mean D-Bus daemon is killing you 20-30s after you are D-Bus activated? Maybe looking at this example helps: https://garage.maemo.org/svn/maemoexamples/tags/maemo_4.1/maemopad/ A gtk app calls osso_initialize() which amongst other things registers a service name to the DBus.freedestop.org service. I've been through osso-init.c and osso-rpc.c to try and figure it out but, whilst I've made progress, I've not finished. So far I have: * added an entry into the desktop file for X-Osso-Service=com.dgreaves.shopper * created : /usr/share/dbus-1/services/com.dgreaves.shopper.service * added a QDBusConnection::sessionBus().interface()-registerService (name, 1 ); and connect(iface, SIGNAL(serviceOwnerChanged(QString,QString,QString)), this, SLOT(serviceOwnerChanged(QString,QString,QString))); dbus-monitor is showing very similar messages for gtk and my Qt apps now. I've hooked serviceOwnerChanged and try to send out a ReleaseName to org.freedesktop.DBus. However I'm still getting killed. Digging into libosso and libossowm/osso-rpc.c I find #define HILDON_DESKTOP_SERVICE com.nokia.hildon-desktop #define HDWM_STARTUP_NOTIFICATION_IFACE com.nokia.hildon.hdwm.startupnotification #define HDWM_OBJECT_PATH/com/nokia/hildon/hdwm #define HDWM_STARTUP_NOTIFICATION_STARTING starting You don't need this. It's just for the Loading... banner in Diablo. This failed as Name:org.freedesktop.DBus.Error.UnknownMethod Message:Method starting with signature on interface com.nokia.hildon.hdwm.startupnotification doesn't exist I installed qdbusmonitor and com.nokia.hildon-desktop doesn't provide hdwm.startupnotification or starting Nor do I see it on the dbus-monitor --session when my gtk app runs. Any pointers? David ___ maemo-developers mailing list maemo-developers@maemo.org https://lists.maemo.org/mailman/listinfo/maemo-developers -- George Burns - Don't stay in bed, unless you can make money in bed. ___ maemo-developers mailing list maemo-developers@maemo.org https://lists.maemo.org/mailman/listinfo/maemo-developers
Re: osso, muali , dbus and Qt closeEvent()s
Kimmo Hämäläinen wrote: On Mon, 2009-03-23 at 14:44 +0100, ext David Greaves wrote: Hi Crossposting as I think this is a maemo-dev question of interest to Qt devs :) I am having a problem with my Qt applications and the osso window manager. Essentially the window manager is doing a sigkill which doesn't allow Qt to emit a closeEvent(). You mean D-Bus daemon is killing you 20-30s after you are D-Bus activated? No. I know about that one :) ah, and as I write this I see Antonio has solved it :) \o/ But we still have issues Maybe looking at this example helps: https://garage.maemo.org/svn/maemoexamples/tags/maemo_4.1/maemopad/ Yes, used that - happy with osso_initialize() I actually would like to know what osso_initialize() should do so we can do the right things in a Qt app though. And your name appears a lot in the source Kimmo :) Digging into libosso and libossowm/osso-rpc.c I find #define HILDON_DESKTOP_SERVICE com.nokia.hildon-desktop #define HDWM_STARTUP_NOTIFICATION_IFACE com.nokia.hildon.hdwm.startupnotification #define HDWM_OBJECT_PATH/com/nokia/hildon/hdwm #define HDWM_STARTUP_NOTIFICATION_STARTING starting You don't need this. It's just for the Loading... banner in Diablo. OK - but do you have a list of things that we should do to make Qt equivalent to gtk? I seem to recall things like dbus messages on low memory and others. Are these documented? The banner would be nice - but the dbus services listed above don't seem to be correct - and I can't find them using a dbus introspect (qdbusviewer) ie this bit (from original email) Message:Method starting with signature on interface com.nokia.hildon.hdwm.startupnotification doesn't exist I installed qdbusmonitor and com.nokia.hildon-desktop doesn't provide hdwm.startupnotification or starting Nor do I see it on the dbus-monitor --session when my gtk app runs. Are you in a postion to help us write the Qt equivalent of osso_initialize() and help make Qt == Gtk David -- Don't worry, you'll be fine; I saw it work in a cartoon once... ___ maemo-developers mailing list maemo-developers@maemo.org https://lists.maemo.org/mailman/listinfo/maemo-developers