Switch to side-by-side view

--- a/libupnpp/control/mediarenderer.hxx
+++ b/libupnpp/control/mediarenderer.hxx
@@ -17,17 +17,18 @@
 #ifndef _MEDIARENDERER_HXX_INCLUDED_
 #define _MEDIARENDERER_HXX_INCLUDED_
 
-#include <memory>                       // for shared_ptr
-#include <string>                       // for string
-#include <vector>                       // for vector
+#include <memory>
+#include <string>
+#include <vector>
 
-#include "libupnpp/control/avtransport.hxx"  // for AVTH
-#include "libupnpp/control/device.hxx"  // for Device
-#include "libupnpp/control/ohplaylist.hxx"  // for OHPLH
-#include "libupnpp/control/ohproduct.hxx"  // for OHPRH
+#include "libupnpp/control/avtransport.hxx"
+#include "libupnpp/control/device.hxx"
+#include "libupnpp/control/ohplaylist.hxx"
+#include "libupnpp/control/ohproduct.hxx"
 #include "libupnpp/control/ohtime.hxx"
 #include "libupnpp/control/ohvolume.hxx"
-#include "libupnpp/control/renderingcontrol.hxx"  // for RDCH
+#include "libupnpp/control/renderingcontrol.hxx"
+#include "libupnpp/control/ohreceiver.hxx"
 
 namespace UPnPClient {
 
@@ -41,6 +42,8 @@
     /** Build from device description */
     MediaRenderer(const UPnPDeviceDesc& desc);
 
+    ~MediaRenderer();
+
     /** Methods returning handles to the different services. May return null
         for unimplemented services. */
     RDCH rdc();
@@ -49,6 +52,7 @@
     OHPLH ohpl();
     OHTMH ohtm();
     OHVLH ohvl();
+    OHRCH ohrc();
 
     bool hasOpenHome();
 
@@ -61,14 +65,11 @@
     static bool isMRDevice(const std::string& devicetype);
 
 protected:
-    STD_WEAK_PTR<RenderingControl> m_rdc;
-    STD_WEAK_PTR<AVTransport> m_avt;
-    STD_WEAK_PTR<OHProduct> m_ohpr;
-    STD_WEAK_PTR<OHPlaylist> m_ohpl;
-    STD_WEAK_PTR<OHTime> m_ohtm;
-    STD_WEAK_PTR<OHVolume> m_ohvl;
 
     static const std::string DType;
+private:
+    class Internal;
+    Internal *m;
 };
 
 }