DBusMediaSource.h 857 B

1234567891011121314151617181920212223242526272829303132
  1. #pragma once
  2. #include "MediaSource.h"
  3. #include <dbus/dbus.h>
  4. namespace WallpaperEngine::Media {
  5. class DBusMediaSource : public MediaSource {
  6. public:
  7. explicit DBusMediaSource (std::chrono::milliseconds updateInterval);
  8. ~DBusMediaSource () override;
  9. void parseMetadata (DBusMessageIter& variant);
  10. void parsePlaybackStatus (DBusMessageIter& variant, const char* sender);
  11. void parsePosition (DBusMessageIter& variant);
  12. void update () override;
  13. protected:
  14. void performUpdate () override;
  15. void initialStatusFetch ();
  16. void detectPlayer ();
  17. DBusMessage* dbusMessage (
  18. const char* bus_name, const char* path, const char* interface, const char* method, const char* iface = nullptr,
  19. const char* prop = nullptr
  20. );
  21. std::optional<std::string> m_currentPlayer = std::nullopt;
  22. DBusConnection* m_connection;
  23. };
  24. }