Review Request 111421: kmix: Use QSharedPointer instead of std::shared_ptr.
Christian Esken
esken at kde.org
Sun Sep 1 15:33:46 BST 2013
> On Aug. 20, 2013, 10:38 a.m., Raphael Kubo da Costa wrote:
> > Ping.
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.
- Christian
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/111421/#review38196
-----------------------------------------------------------
On July 6, 2013, 5:35 p.m., Raphael Kubo da Costa wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://git.reviewboard.kde.org/r/111421/
> -----------------------------------------------------------
>
> (Updated July 6, 2013, 5:35 p.m.)
>
>
> Review request for KDE Multimedia and Christian Esken.
>
>
> Description
> -------
>
> 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.
>
>
> Diffs
> -----
>
> apps/kmix.cpp 8fdcf730789eb2b227f199c6cbb77db8545d918d
> apps/kmixd.cpp 442abaf89b65f96382bf954e6cb592d61ff12b12
> backends/mixer_alsa.h c7f49f2f623b4741317a9aea1e85ceb219ed6b62
> backends/mixer_alsa9.cpp 635a20162b9eda45ca2c9ef0c2d067b5469ab403
> backends/mixer_backend.h 642fe70df314009b3d748666bb03abd8d61f1ab7
> backends/mixer_backend.cpp f4758d673cbbc7c9d65dd4a134d82df183b7dbd6
> backends/mixer_mpris2.h 18e2b1835bc9fec0f78c6cdf365a27f3f352d07e
> backends/mixer_mpris2.cpp 18641258f63b961e0a3f0cdf01a9e21d0f0c42be
> backends/mixer_oss.h 4f2646a860d86759cef64d3dd13d8c639c028d4c
> backends/mixer_oss.cpp 28e972d4d33b040e5597acd4d6d8c51c9c90a82c
> backends/mixer_oss4.h ae509318b130db0a382b82fcb433f3ccacdc6d10
> backends/mixer_oss4.cpp 058d999d366e13850953666b0b5a4c24f0d109a9
> backends/mixer_pulse.h ef2050c561cfc8669939cc844750034dd87bed4e
> backends/mixer_pulse.cpp d043ec4a3067caacdfda1267a558fc4d44d3e7f8
> backends/mixer_sun.h 4412e442c5b4f421ecd4518435ab7fc67e31c085
> backends/mixer_sun.cpp 62edc3fb8fb8832ccf207953c0b053b0107a7421
> core/ControlPool.h 4cb2222f46e9ed855bfbe028fe1c124f683d8f8a
> core/ControlPool.cpp f2dd17b4f7e4a55c738bb1091671e07c7812c48c
> core/MasterControl.h dff9e95d719508a8966d1d9c994948851d5bd2c8
> core/mixdevice.h 177c3b264683bb967b87f08a1b83855c3295ea7f
> core/mixdevice.cpp 06b883ea70030d3e3abc2727674b18cff7a181e1
> core/mixdevicecomposite.h 0180e2450bc2d9feb2b9d5e237f6ecd948f38806
> core/mixdevicecomposite.cpp dec3a8f69c0c50384615c6765adc344b987c9d44
> core/mixer.h 97e2775e3c15f49bdaea3dd4e6748ef284df8950
> core/mixer.cpp f3e14ec2137a7a94ecc4760be2140a2e937161f4
> core/mixertoolbox.cpp 481e0f3255d3a2dc8142c5f8ba95f411e41802f4
> core/mixset.h acea5991bf20d113976c6758b40559f4b27b941a
> core/mixset.cpp 67cd2c58b5e6f00d8821c1273fa47f024092a87a
> dbus/dbuscontrolwrapper.h 5355f974d16ebff8218c7582d949d688050f7d97
> dbus/dbuscontrolwrapper.cpp 4e141c1bdb72bff330fb12952eeeddb61169484e
> dbus/dbusmixerwrapper.cpp d135d4209f1741ce5d678d0df11461a3a44359e9
> dbus/dbusmixsetwrapper.cpp 63012d7cbc1e6d416ca59535aa0b0847e6569bab
> gui/dialogselectmaster.cpp ed2d8042546f15244097969101c94355ddc53eab
> gui/dialogviewconfiguration.cpp 7a5f7fcf6203ba64f281e8804080ee50d3b26aef
> gui/kmixdockwidget.cpp ad8d21b73d177535540115013a11fa65b931f09e
> gui/mdwenum.h 82d3707bce50715fbf68a34297a243742aa3a0f2
> gui/mdwenum.cpp 598aecb3a1a4a00fba81be22a6c8ab3391cacd50
> gui/mdwmoveaction.h acc6e6e467df12b92e41e9e5fbb3b2de37e31fd8
> gui/mdwmoveaction.cpp 4fafdf1b381ae1825cea54429252bfa13688df4d
> gui/mdwslider.h a9b056f0cdebe7bfd184b26685385182cdb4bd1f
> gui/mdwslider.cpp 761e667ba5b1a6cd0406230dfc18558d827c755a
> gui/mixdevicewidget.h d80d9d899648c0eb615985f411785db1d7e196b0
> gui/mixdevicewidget.cpp ae5be25e6fae626da870824adabb9c9b0e229eae
> gui/osdwidget.cpp 72b8d9c6ca773831a31f26a4a72537b83949b612
> gui/viewbase.h 9ef64bb30d3c0d433b8b94fba11da2f46b73a996
> gui/viewbase.cpp 86e503c04a5889351cefe4f43ed6541ff8a76525
> gui/viewdockareapopup.h 4201a54c965b8e8457b148e844ff74aca40597b4
> gui/viewdockareapopup.cpp cefd8d158e9060fe4d3c4b49715ea65a5c1a75f0
> gui/viewsliders.h 707281179955cc4bd9f0891f14ac88ff2621dbda
> gui/viewsliders.cpp c8c9f78eb1375c860c38f2bb28b32945b7ecea06
>
> Diff: http://git.reviewboard.kde.org/r/111421/diff/
>
>
> Testing
> -------
>
> KMix still seems to work fine, and compilation with libc++ succeeds.
>
>
> Thanks,
>
> Raphael Kubo da Costa
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-multimedia/attachments/20130901/bdb31763/attachment.htm>
-------------- next part --------------
_______________________________________________
kde-multimedia mailing list
kde-multimedia at kde.org
https://mail.kde.org/mailman/listinfo/kde-multimedia
More information about the kde-multimedia
mailing list