After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 732057 - It's not currently possible to reimplement the rygel-player-controller
It's not currently possible to reimplement the rygel-player-controller
Status: RESOLVED FIXED
Product: rygel
Classification: Applications
Component: librygel-renderer
git master
Other All
: Normal normal
: ---
Assigned To: rygel-maint
rygel-maint
Depends on:
Blocks:
 
 
Reported: 2014-06-22 17:50 UTC by Richard Röjfors
Modified: 2014-08-19 19:38 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Patch implementing the change (30.14 KB, patch)
2014-06-22 17:50 UTC, Richard Röjfors
committed Details | Review

Description Richard Röjfors 2014-06-22 17:50:25 UTC
Created attachment 278938 [details] [review]
Patch implementing the change

This limits the possibility of integrating an external player.

For instance the playlist is currently kept inside the player-controller. A change in the player can not be propagated to rygel.

The player does not currently get the next URI and can not start to prebuffer.

prev/next calls is handled by the player-controller...

The attached patch turns rygel-player-controller into an interface.

The current implementation is moved to rygel-default-player-controller which is instantiated by the get_controller function of the renderer plugin.
The get_controller function is now virtual making it possible for plugins to reimplement and return another controller.
Comment 1 Jens Georg 2014-06-24 14:53:37 UTC
Review of attachment 278938 [details] [review]:

Lessons learned from making the player API public: It's abysmally ugly to implement from C due to the use of properties. I'm not sure whether we should go down the same route here
Comment 2 Richard Röjfors 2014-06-24 20:31:28 UTC
Yep it's not optional with properties and C.

On the other hand the API is about assigning or reading properties and get notified on changes...

It's not that painful, override the properties and implement a set:er and get:er. And the API looks similar to the player API, furthermore it require no changes to other parts of rygel-renderer.