<html>
<body>
<div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
<table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
<tr>
<td>
This is an automatically generated e-mail. To reply, visit:
<a href="http://git.reviewboard.kde.org/r/111421/">http://git.reviewboard.kde.org/r/111421/</a>
</td>
</tr>
</table>
<br />
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<p style="margin-top: 0;">On August 20th, 2013, 10:38 a.m. UTC, <b>Raphael Kubo da Costa</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Ping.</pre>
</blockquote>
</blockquote>
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Pong :-)
Exchanging one shared pointer with another is not a decision to take lightly - the bugs radiating around objects deletions are extremely nasty and time consuming. As I reached stability I would not really want too risk it again. I also like use_count() from shared_ptr. Fixing #include statements is way easier, faster and more secure (does not compile vs breaks during runtime) than fixing a broken rutime.
If I remember correctly I had problems with using QSharedPointer. I have a loop in my Object graph (Mixer <-> DBUSMixerWrapper or DBUSControlWrapper) and Qt would start deleting the Object that I wanted to save. Issues very especially hard when Qt began running "slots" for async signals at inconvenient times (during emit() IIRC). Might have had a different root cause (and design issue) though.
Summarizing: It would be possible and has advantages for compiling, but I do not think it is worth the risk during runtime.
</pre>
<br />
<p>- Christian</p>
<br />
<p>On July 6th, 2013, 5:35 p.m. UTC, Raphael Kubo da Costa wrote:</p>
<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('http://git.reviewboard.kde.org/static/rb/images/review_request_box_top_bg.ab6f3b1072c9.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
<tr>
<td>
<div>Review request for KDE Multimedia and Christian Esken.</div>
<div>By Raphael Kubo da Costa.</div>
<p style="color: grey;"><i>Updated July 6, 2013, 5:35 p.m.</i></p>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
<tr>
<td>
<pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">std::shared_ptr is a C++11 feature, whose location (and existence) in STL
implementations of previous C++ standards varied -- including <tr1/memory>
unconditionally breaks the build if libc++ is used instead of libstdc++, for
example.
While it could be possible to just check which headers are available and
where std::shared_ptr is defined and include only the proper headers, I
don't see any reason not to just use QSharedPointer instead.</pre>
</td>
</tr>
</table>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
<tr>
<td>
<pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">KMix still seems to work fine, and compilation with libc++ succeeds.</pre>
</td>
</tr>
</table>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">
<li>apps/kmix.cpp <span style="color: grey">(8fdcf730789eb2b227f199c6cbb77db8545d918d)</span></li>
<li>apps/kmixd.cpp <span style="color: grey">(442abaf89b65f96382bf954e6cb592d61ff12b12)</span></li>
<li>backends/mixer_alsa.h <span style="color: grey">(c7f49f2f623b4741317a9aea1e85ceb219ed6b62)</span></li>
<li>backends/mixer_alsa9.cpp <span style="color: grey">(635a20162b9eda45ca2c9ef0c2d067b5469ab403)</span></li>
<li>backends/mixer_backend.h <span style="color: grey">(642fe70df314009b3d748666bb03abd8d61f1ab7)</span></li>
<li>backends/mixer_backend.cpp <span style="color: grey">(f4758d673cbbc7c9d65dd4a134d82df183b7dbd6)</span></li>
<li>backends/mixer_mpris2.h <span style="color: grey">(18e2b1835bc9fec0f78c6cdf365a27f3f352d07e)</span></li>
<li>backends/mixer_mpris2.cpp <span style="color: grey">(18641258f63b961e0a3f0cdf01a9e21d0f0c42be)</span></li>
<li>backends/mixer_oss.h <span style="color: grey">(4f2646a860d86759cef64d3dd13d8c639c028d4c)</span></li>
<li>backends/mixer_oss.cpp <span style="color: grey">(28e972d4d33b040e5597acd4d6d8c51c9c90a82c)</span></li>
<li>backends/mixer_oss4.h <span style="color: grey">(ae509318b130db0a382b82fcb433f3ccacdc6d10)</span></li>
<li>backends/mixer_oss4.cpp <span style="color: grey">(058d999d366e13850953666b0b5a4c24f0d109a9)</span></li>
<li>backends/mixer_pulse.h <span style="color: grey">(ef2050c561cfc8669939cc844750034dd87bed4e)</span></li>
<li>backends/mixer_pulse.cpp <span style="color: grey">(d043ec4a3067caacdfda1267a558fc4d44d3e7f8)</span></li>
<li>backends/mixer_sun.h <span style="color: grey">(4412e442c5b4f421ecd4518435ab7fc67e31c085)</span></li>
<li>backends/mixer_sun.cpp <span style="color: grey">(62edc3fb8fb8832ccf207953c0b053b0107a7421)</span></li>
<li>core/ControlPool.h <span style="color: grey">(4cb2222f46e9ed855bfbe028fe1c124f683d8f8a)</span></li>
<li>core/ControlPool.cpp <span style="color: grey">(f2dd17b4f7e4a55c738bb1091671e07c7812c48c)</span></li>
<li>core/MasterControl.h <span style="color: grey">(dff9e95d719508a8966d1d9c994948851d5bd2c8)</span></li>
<li>core/mixdevice.h <span style="color: grey">(177c3b264683bb967b87f08a1b83855c3295ea7f)</span></li>
<li>core/mixdevice.cpp <span style="color: grey">(06b883ea70030d3e3abc2727674b18cff7a181e1)</span></li>
<li>core/mixdevicecomposite.h <span style="color: grey">(0180e2450bc2d9feb2b9d5e237f6ecd948f38806)</span></li>
<li>core/mixdevicecomposite.cpp <span style="color: grey">(dec3a8f69c0c50384615c6765adc344b987c9d44)</span></li>
<li>core/mixer.h <span style="color: grey">(97e2775e3c15f49bdaea3dd4e6748ef284df8950)</span></li>
<li>core/mixer.cpp <span style="color: grey">(f3e14ec2137a7a94ecc4760be2140a2e937161f4)</span></li>
<li>core/mixertoolbox.cpp <span style="color: grey">(481e0f3255d3a2dc8142c5f8ba95f411e41802f4)</span></li>
<li>core/mixset.h <span style="color: grey">(acea5991bf20d113976c6758b40559f4b27b941a)</span></li>
<li>core/mixset.cpp <span style="color: grey">(67cd2c58b5e6f00d8821c1273fa47f024092a87a)</span></li>
<li>dbus/dbuscontrolwrapper.h <span style="color: grey">(5355f974d16ebff8218c7582d949d688050f7d97)</span></li>
<li>dbus/dbuscontrolwrapper.cpp <span style="color: grey">(4e141c1bdb72bff330fb12952eeeddb61169484e)</span></li>
<li>dbus/dbusmixerwrapper.cpp <span style="color: grey">(d135d4209f1741ce5d678d0df11461a3a44359e9)</span></li>
<li>dbus/dbusmixsetwrapper.cpp <span style="color: grey">(63012d7cbc1e6d416ca59535aa0b0847e6569bab)</span></li>
<li>gui/dialogselectmaster.cpp <span style="color: grey">(ed2d8042546f15244097969101c94355ddc53eab)</span></li>
<li>gui/dialogviewconfiguration.cpp <span style="color: grey">(7a5f7fcf6203ba64f281e8804080ee50d3b26aef)</span></li>
<li>gui/kmixdockwidget.cpp <span style="color: grey">(ad8d21b73d177535540115013a11fa65b931f09e)</span></li>
<li>gui/mdwenum.h <span style="color: grey">(82d3707bce50715fbf68a34297a243742aa3a0f2)</span></li>
<li>gui/mdwenum.cpp <span style="color: grey">(598aecb3a1a4a00fba81be22a6c8ab3391cacd50)</span></li>
<li>gui/mdwmoveaction.h <span style="color: grey">(acc6e6e467df12b92e41e9e5fbb3b2de37e31fd8)</span></li>
<li>gui/mdwmoveaction.cpp <span style="color: grey">(4fafdf1b381ae1825cea54429252bfa13688df4d)</span></li>
<li>gui/mdwslider.h <span style="color: grey">(a9b056f0cdebe7bfd184b26685385182cdb4bd1f)</span></li>
<li>gui/mdwslider.cpp <span style="color: grey">(761e667ba5b1a6cd0406230dfc18558d827c755a)</span></li>
<li>gui/mixdevicewidget.h <span style="color: grey">(d80d9d899648c0eb615985f411785db1d7e196b0)</span></li>
<li>gui/mixdevicewidget.cpp <span style="color: grey">(ae5be25e6fae626da870824adabb9c9b0e229eae)</span></li>
<li>gui/osdwidget.cpp <span style="color: grey">(72b8d9c6ca773831a31f26a4a72537b83949b612)</span></li>
<li>gui/viewbase.h <span style="color: grey">(9ef64bb30d3c0d433b8b94fba11da2f46b73a996)</span></li>
<li>gui/viewbase.cpp <span style="color: grey">(86e503c04a5889351cefe4f43ed6541ff8a76525)</span></li>
<li>gui/viewdockareapopup.h <span style="color: grey">(4201a54c965b8e8457b148e844ff74aca40597b4)</span></li>
<li>gui/viewdockareapopup.cpp <span style="color: grey">(cefd8d158e9060fe4d3c4b49715ea65a5c1a75f0)</span></li>
<li>gui/viewsliders.h <span style="color: grey">(707281179955cc4bd9f0891f14ac88ff2621dbda)</span></li>
<li>gui/viewsliders.cpp <span style="color: grey">(c8c9f78eb1375c860c38f2bb28b32945b7ecea06)</span></li>
</ul>
<p><a href="http://git.reviewboard.kde.org/r/111421/diff/" style="margin-left: 3em;">View Diff</a></p>
</td>
</tr>
</table>
</div>
</body>
</html>