[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
Re: Query about handling OS signals
- From: G Hasse <gorhas raditex se>
- To: John M Collins <jmc xisl com>
- Cc: gtk-app-devel-list gnome org
- Subject: Re: Query about handling OS signals
- Date: Thu, 10 Apr 2008 10:19:29 +0200
On Thu, Apr 10, 2008 at 09:12:21AM +0100, John M Collins wrote:
> I have spent most of a day looking at the various documents about
> emitting signals and articles here without finding the answers to the
> questions - sorry if they seem stupid as I'm a comparative newcomer to
> GTK.
>
> I am converting an application to use GTK+ which receives messages from
> a daemon process using signals - i.e. OS signals not the signals in GTK.
>
> The signals are sent by the daemon process to tell the receiving clients
> "you might want to refresh your display". It is for the receiving
> clients to worry about whether they do need to refresh their displays
> (the actual data is in shared memory).
>
> My first question is: Is it safe to emit a signal (i.e. the GTK idea of
> a signal) within the OS-signal handling routine?
No. You should get rid of the OS-signal handling mechanism. Use a
file descriptor, a socket (UDP) or something, register a callback to
this and update in the ordinary mannor. Signals is a nucience. You
should keep syctronication on file descriptor.
The daemon process then send a UDP (Multicast) message to the clients.
If you want I can give you an example.
> If not, it looks as if the only standard way is to have the OS
> signal-catching routine just turn on "had_a_signal" and use
> g_timeout_add to call a function which looks at "had_a_signal". Or is
> there a better way?
>
> If it is OK to emit a signal please could someone confirm my
> understanding of "events" in GTK. (I'd appreciate it if someone could
> confirm my understanding in any case).
>
> Am I right in thinking that if I want to emit a client event (which
> seems to be an appropriate thing to emit) I can either put:
>
> g_signal_emit_by_name(G_OBJECT(window), "client_event");
>
> Or I set up a GdkEvent and put
>
> g_signal_emit_by_name(G_OBJECT(window), "event", &event,
> &retval);
>
> Unfortunately the documentation such as there is talks about using
> gtk_signal_emit_by_name but the documentation of that says it's
> deprecated and I should use g_signal_emit_by_name.
>
> Or is there is some altogether better way of doing all this that I
> haven't thought of? Please note rewriting the daemon process is not
> currently an option.
You should! It is a small difference.
And WERY worthwhile.
>
> John Collins <jmc xisl com> Skype: toadwarbler
> Xi Software Ltd www.xisl.com
>
> Tel: +44 (0)1707 886110 (Direct)
> +44 (0)7799 113162 (Mobile)
>
> Registered in England & Wales Company Number 1977148 VAT: GB 403 9239 64
>
> Trading Address: 3 Mandeville Rise, Welwyn Garden City, Herts, AL8 7JT, UK
> Reg Office: 2 Mill Road, Haverhill, Suffolk, CB9 8BD, UK
>
> _______________________________________________
> gtk-app-devel-list mailing list
> gtk-app-devel-list gnome org
> http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
--
Göran Hasse
----------------------------------------------------------------
Göran Hasse email: gorhas raditex se Tel: 08-6949270
Raditex AB http://www.raditex.se
Planiavägen 15, 1tr Mob: 070-5530148
131 34 NACKA, SWEDEN OrgNr: 556240-0589
VAT: SE556240058901
------------------------------------------------------------------
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]