Difference between revisions of "DBus"

From VideoLAN Wiki
Jump to navigation Jump to search
Line 51: Line 51:
== List of signals and methods ==
== List of signals and methods already implemented ==

Revision as of 06:03, 21 November 2006

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]


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:

  1. unregister '/'
  2. 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

volume control => VolumeGet and VolumeSet

playlist => hard.... could we use xspf ?

timing of the input element (position, jump)

preferences ?

List of signals and methods already implemented


'Signal' (signature) : description

'ItemChange' (s) : Emitted when a new input element is played, the string contains the filename, or the input name if it has some metadata.

'NewInstance' (i) : Emitted when vlc control interface is started, with vlc pid


'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