Difference between revisions of "DBus"
Line 53: | Line 53: | ||
''''Signal' (signature) : description''' | ''''Signal' (signature) : description''' | ||
− | |||
− | |||
'NewInstance' (i) : Emitted when vlc control interface is started, with vlc pid | 'NewInstance' (i) : Emitted when vlc control interface is started, with vlc pid |
Revision as of 20:54, 21 November 2006
Contents
TODO for DBus integration
List all signals, methods with their arguments and return value
Decide service bahaviour
Could vlc be a on-demand startable service, would it be useful ?
We just have to create a /usr/share/dbus-1/org.videolan.vlc.service:
[D-BUS Service]
Name=org.videolan.vlc
Exec=/usr/bin/vlc -I dummy --control dbus
Clarify one instance mode
Now if vlc is built with D-Bus >= 1.0.0 it will automatically register org.videolan.vlc, and no other instances of vlc will be allowed to replace the service.
When vlc starts it registers the org.videolan.vlc service on the session bus
- if it succeeds, it register '/' object on it
- if it fails:
- if "one-instance" is false, just warn that it didn't register the service
- if "one-instance" is true, the mrls given on the command line are passed to the owner of org.videolan.vlc through D-Bus interface and then exit
When D-Bus control interface starts, it does:
- unregister '/'
- register '/org/videolan/vlc'
The problem is that it does require dbus control to be loaded.
Possible ways to do that:
- check if /org/videolan/vlc is present before exit, and then ignore one-instance setting if dbus control isn't activated
- use service activation, but that mean we would have 1 GUI without dbus control, and 1 with dbus control
Missing features
playlist => hard.... could we use xspf ?
preferences ? that seems pretty useless
List of signals and methods already implemented
Signals
'Signal' (signature) : description
'NewInstance' (i) : Emitted when vlc control interface is started, with vlc pid
Methods
'Method' (input signature) = (output signature) : description
'GetPlayStatus' () = (s) : return "play" "pause" "stopped" or "unknown"
'GetPlayingItem' () = (s) : return the filename of the current item being played, or it's name if it has some metadata. Same data provided by "ItemChange"
'ToglePause' () = (b) : toggle the play/pause status, and start playing if it was stopped, return true if playing, false if paused
'AddMRL' (sb) = () : add string to the playlist, and play it if bool is true
'Nothing' () = () : do nothing, just here for tests, and code example
'Quit' () = () : exits vlc
'Stop' () = () : stop playlist
'Prev' () = () : plays previous playlist item
'Next' () = () : plays next playlist item
'PositionGet' () = (q) : get an uint16 in the range [0;1000] representing the position of current input, or 0 if no input
'PositionSet' (q) = () : gives an uint16 in the range [0;1000] to set the position of current input
'VolumeGet' () = (q) : get an uint16 in the range [0;100] representing the current volume
'VolumeSet' (q) = () : gives an uint16 in the range [0;100] to set the current volume