Stefan Lucke wrote:
On Dienstag, 26. Juli 2005 18:52, Wolfgang Rohdewald wrote:
On Dienstag 26 Juli 2005 14:29, Luca Olivetti wrote:
Stefan Lucke wrote:
Is there another way for a plugin to display a message during background processing ? Preferably a _non_ blocking way,as I noticed that Skins.Message() does it's job blocking.
Is there a solution for this problem? I now also need to notify the user of a background event, and the Housekeeping method (a possible candidate since it's called from the foreground thread) isn't suitable, since it's called only once every 60 seconds.
as far as I can see the only other method is to connect to port 2001.
The SVDRP port is not hardcoded, it can be specified via "-p number". So the next question would be, how can a plugin read the port our main program is listening on ? So plugins need the -p option too.
Isn't it more suitable to make Skins.Message() usable for plugins ? Klaus ?
A plugin may well call Skins.Message(), but only from the _main_ thread.
I'm thinking about a function like
cOsdObject *cPlugin::Popup(void);
which would be called in every turn of the main loop (i.e. from the foreground thread) whenever there is no OSD display open. A plugin could either return a cOsdObject that will be presented to the user, or could directly display a message (even with user interaction, if necessary) and retrun NULL. Of course, if a plugin's thread wants to issue a message, it will have to store the message inside the plugin and wait until asked through a call to its Popup() function.
Would that be a useful solution?
Klaus