[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-panel-devel
Subject:    Re: Review Request 125433: kcm_kamera: Double calls to load() lead to strange scrollbars after savin
From:       Marcus Meissner <marcus () jet ! franken ! de>
Date:       2015-10-08 7:26:12
Message-ID: 20151008072612.GA2992 () jet ! franken ! de
[Download RAW message or body]

On Thu, Oct 08, 2015 at 07:22:49AM -0000, Christian Butcher wrote:
> 
> 
> > On Sept. 28, 2015, 7:02 a.m., Marcus Meissner wrote:
> > > according to git blame I added this to help autoload the camera list ... \
> > > although I have not much recall of this :/
> > 
> > Christian Butcher wrote:
> > A run of 'gdb systemsettings5' with 'break KKameraConfig::load()' and \
> > corresponding calls to 'bt' informs me that with the load() call inside \
> > displayGPSuccessDialogue, first it is called by the displayGPSuccessDialogue: ``` \
> >  #0  KKameraConfig::load (this=0x9d3310) at \
> > /home/christian/kde-git/Extras/kamera/kcontrol/kamera.cpp:203 #1  \
> > 0x00007fffd3e08bec in KKameraConfig::displayGPSuccessDialogue (this=0x9d3310) at \
> > /home/christian/kde-git/Extras/kamera/kcontrol/kamera.cpp:171 #2  \
> > 0x00007fffd3e07c04 in KKameraConfig::KKameraConfig (this=0x9d3310, \
> > parent=0x9c3240) at /home/christian/kde-git/Extras/kamera/kcontrol/kamera.cpp:67
> > #3  0x00007fffd3e0c89e in KPluginFactory::createInstance<KKameraConfig, QWidget> \
> > (parentWidget=0x0, parent=0x9c3240, args=...) at \
> > /opt/kde/include/KF5/KCoreAddons/kpluginfactory.h:477 #4  0x00007ffff34df827 in \
> > KPluginFactory::create(char const*, QWidget*, QObject*, QList<QVariant> const&, \
> > QString const&) () from /opt/kde/lib64/libKF5CoreAddons.so.5
> > #5  0x00007ffff798ed10 in KCModuleLoader::loadModule(KCModuleInfo const&, \
> > KCModuleLoader::ErrorReporting, QWidget*, QStringList const&) () from \
> > /opt/kde/lib64/libKF5KCMUtils.so.5 #6  0x00007ffff799785c in \
> >                 KCModuleProxyPrivate::loadModule() () from \
> >                 /opt/kde/lib64/libKF5KCMUtils.so.5
> > ...
> > #67 0x00.... in main ()
> > ```
> > 
> > and then again by KCModule::qt_static_metacall:
> > ```
> > #0  KKameraConfig::load (this=0x9d3310) at \
> > /home/christian/kde-git/Extras/kamera/kcontrol/kamera.cpp:203 #1  \
> > 0x00007ffff6a4e9d9 in KCModule::qt_static_metacall(QObject*, QMetaObject::Call, \
> > int, void**) () from /opt/kde/lib64/libKF5ConfigWidgets.so.5
> > #2  0x00007ffff3075832 in QObject::event(QEvent*) () from \
> > /opt/qt5/lib64/libQt5Core.so.5 #3  0x00007ffff4be74c7 in QWidget::event(QEvent*) \
> > () from /opt/qt5/lib64/libQt5Widgets.so.5 #4  0x00007ffff4ba699c in \
> > QApplicationPrivate::notify_helper(QObject*, QEvent*) () from \
> > /opt/qt5/lib64/libQt5Widgets.so.5 #5  0x00007ffff4babb40 in \
> > QApplication::notify(QObject*, QEvent*) () from /opt/qt5/lib64/libQt5Widgets.so.5 \
> > #6  0x00007ffff3046ae3 in QCoreApplication::notifyInternal(QObject*, QEvent*) () \
> > from /opt/qt5/lib64/libQt5Core.so.5 #7  0x00007ffff3048d53 in \
> > QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from \
> > /opt/qt5/lib64/libQt5Core.so.5 #8  0x00007ffff309bac3 in ?? () from \
> > /opt/qt5/lib64/libQt5Core.so.5 #9  0x00007fffed7b778d in g_main_dispatch \
> > (context=0x7fffdc0016f0) at ../../glib/gmain.c:3122 #10 g_main_context_dispatch \
> > (context=context@entry=0x7fffdc0016f0) at ../../glib/gmain.c:3737 #11 \
> > 0x00007fffed7b7a38 in g_main_context_iterate \
> > (context=context@entry=0x7fffdc0016f0, block=block@entry=1,  \
> > dispatch=dispatch@entry=1, self=<optimized out>) at ../../glib/gmain.c:3808 #12 \
> > 0x00007fffed7b7adc in g_main_context_iteration (context=0x7fffdc0016f0, \
> > may_block=1) at ../../glib/gmain.c:3869 #13 0x00007ffff309beb7 in \
> > QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () \
> > from /opt/qt5/lib64/libQt5Core.so.5 #14 0x00007ffff3044682 in \
> > QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from \
> > /opt/qt5/lib64/libQt5Core.so.5 #15 0x00007ffff304c18d in QCoreApplication::exec() \
> > () from /opt/qt5/lib64/libQt5Core.so.5 #16 0x000000000040f108 in main ()
> > ```
> > 
> > I would guess that the second call occurs immediately after (but I didn't step \
> > through, so I could be horribly wrong).  
> > load() does indeed call populateDeviceListView(), then gp_list_free(list). \
> > gp_list_new(&list) is called in the same function, so I don't think there's any \
> > risk of double free, but something strange happens. 
> > If I watch carefully, sometimes the correct kcm loads and is then replaced by the \
> > scrollbars between debug statements to 'kamera.kcontrol' in ~/.xsession-errors \
> > (these debug statements aren't in the git repository since they're fairly useless \
> > for general use I imagine). I'm sure the reliability of 'tail -f' for judging \
> > timing is pretty non-existent but I find it qualitatively convincing. 
> > Marcus Meissner wrote:
> > I tried to comment it out, it does not seem to change behaviour so it seems good.
> > 
> > (the config dialog is broken though... :( )
> 
> Should I commit? (I added you as a reviewer also.)
> 
> How do you mean broken? If you mean it remains empty, then obviously I shouldn't \
> commit, and should work out why it fixes for me, but not you. If something else, \
> perhaps I can look at that next?

You can commit.

Do you have any PTP camera or Android device that you could try out with this dialog?

Ciao, Marcus

 
> - Christian
> 
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/125433/#review86025
> -----------------------------------------------------------
> 
> 
> On Oct. 8, 2015, 7:22 a.m., Christian Butcher wrote:
> > 
> > -----------------------------------------------------------
> > This is an automatically generated e-mail. To reply, visit:
> > https://git.reviewboard.kde.org/r/125433/
> > -----------------------------------------------------------
> > 
> > (Updated Oct. 8, 2015, 7:22 a.m.)
> > 
> > 
> > Review request for KDE Graphics, Plasma and Marcus Meissner.
> > 
> > 
> > Repository: kamera
> > 
> > 
> > Description
> > -------
> > 
> > The displayGPSuccessDialogue(void) function calls load() as its last statement \
> > currently. 
> > Documentation for the KCModule api (both \
> > [kde4](http://api.kde.org/4.x-api/kdelibs-apidocs/kdeui/html/classKCModule.html) \
> > and [frameworks](http://api.kde.org/frameworks-api/frameworks5-apidocs/kconfigwidgets/html/classKCModule.html)) \
> > informs the reader that load() is called at the end of construction - \
> > consequently it seems that the additional load() call leads to the function \
> > (which is implemented as KKameraConfig::load() ) being called twice. 
> > [Bug 236844](https://bugs.kde.org/show_bug.cgi?id=236844) may be related but at \
> > least on my KF5 based system, this does not cause or prevent a crash, which is \
> > referenced in the bug. 
> > Separately, COPYING-CMAKE-SCRIPTS is referenced by the FindGphoto2.cmake file, \
> > and seems to have missed the commit in \
> > [RR-125230](https://git.reviewboard.kde.org/r/125230/). If this was intentional, \
> > then my apologies for readding here, but if so, the FindGphoto2.cmake file will \
> > need changing in some way. 
> > 
> > Diffs
> > -----
> > 
> > COPYING-CMAKE-SCRIPTS PRE-CREATION 
> > kcontrol/kamera.cpp 2d8f61449a5a6f2650d864c864652ebea780a422 
> > kcontrol/kameradevice.h b0ecb974f8fcb765228afe1965aeebab8e7656ed 
> > 
> > Diff: https://git.reviewboard.kde.org/r/125433/diff/
> > 
> > 
> > Testing
> > -------
> > 
> > When the call is present, opening the Kamera KCM within systemsettings after \
> > saving changes and going back to the main systemsettings view leads to a strange \
> > set of scrollbars. 
> > With the additional call removed, the KCM-Kamera opens properly on the second \
> > attempt, after saving changes. 
> > As a camera to test, the first (in the scroll list) serial port camera is \
> > 'Achiever Digital Adc65'. 'Barbie' may be easier to find as the first entry for \
> > 'B', and is also more memorable... I used a serial camera, since then the kcm \
> > will load images even without a camera connected 
> > 
> > File Attachments
> > ----------------
> > 
> > scrollbars
> > https://git.reviewboard.kde.org/media/uploaded/files/2015/09/28/74e8bd93-4c4a-4103-9fb1-7bd106258058__kcm1.png
> >  
> > 
> > Thanks,
> > 
> > Christian Butcher
> > 
> > 
> 
_______________________________________________
Plasma-devel mailing list
Plasma-devel@kde.org
https://mail.kde.org/mailman/listinfo/plasma-devel


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic