[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-games-devel
Subject: Re: [Kde-games-devel] Data migration issue
From: Mathias Kraus <k.hias () gmx ! de>
Date: 2015-03-04 17:16:06
Message-ID: 40729917.sFuQqi6lvK () io
[Download RAW message or body]
Am Mittwoch, 4. März 2015, 10:04:11 schrieb Matthew Dawson:
> On March 3, 2015 10:59:21 PM Mathias Kraus wrote:
> > Hi,
> >
> > I noticed a problem with the data migration in the kdegames transition from
> > kdelibs4 to kf5 and Albert Astals Cid suggested to ask frameworks devel for
> > advice.
> >
> > In short, when the migration is run after the QCoreApplication is created,
> > the migrated config is not used but the default values. This results in a
> > lost migration if the users changes some settings during the first run of
> > the kf5 version of the game. Also, if the user plays a game and wins, all
> > the previous high scores will be lost. Ian Wadham assumes there will be
> > also other issues.
> >
> > If the migration is run before the creation of the QCoreApplication, it
> > seems to work correct.
> Taking a look into what is happening, it appears that other libraries are
> accessing the kminesrc file once QCoreApplication is created by using
> KSharedConfig::openConfig. This function caches that instance of
> KSharedConfig, which is working ontop of an empty file and thus does nothing.
>
> One backtrace I got looks like:
> #5 0x00007ffff5adc3c0 in KSharedConfig::openConfig (_fileName=..., flags=...,
> resType=QStandardPaths::GenericConfigLocation) at
> /home/matthew/kde/kconfig/src/core/ksharedconfig.cpp:87
> #6 0x00007fffe21ed296 in KHintsSettings::KHintsSettings (this=0x683380) at
> /usr/src/debug/kde-
> frameworks/frameworkintegration-9999/frameworkintegration-9999/src/platformtheme/khintssettings.cpp:65
> #7 0x00007fffe21e94f7 in KdePlatformTheme::loadSettings (this=0x67f930) at
> /usr/src/debug/kde-
> frameworks/frameworkintegration-9999/frameworkintegration-9999/src/platformtheme/kdeplatformtheme.cpp:121
> #8 0x00007fffe21fc6bb in KdePlatformThemePlugin::create (this=<optimized
> out>, key=..., paramList=...) at /usr/src/debug/kde-
> frameworks/frameworkintegration-9999/frameworkintegration-9999/src/platformtheme/main.cpp:52
> #9 0x00007ffff4aaa44e in qLoadPlugin1<QPlatformTheme, QPlatformThemePlugin,
> QStringList> (parameter1=..., key=..., loader=0x7ffff4f63ab0
> <_ZZN12_GLOBAL__N_112Q_QGS_loader13innerFunctionEvE6holder>) at
> /usr/include/qt5/QtCore/5.4.0/QtCore/private/qfactoryloader_p.h:107
> #10 QPlatformThemeFactory::create (key=..., platformPluginPath=...) at
> kernel/qplatformthemefactory.cpp:64
> #11 0x00007ffff4ab4012 in init_platform (argv=0x7fffffffce58,
> argc=@0x7fffffffcc7c: 1, platformThemeName=..., platformPluginPath=...,
> pluginArgument=...) at kernel/qguiapplication.cpp:1045
> #12 QGuiApplicationPrivate::createPlatformIntegration (this=0x63dec0) at
> kernel/qguiapplication.cpp:1166
> #13 0x00007ffff4ab4ced in QGuiApplicationPrivate::createEventDispatcher
> (this=<optimized out>) at kernel/qguiapplication.cpp:1183
> #14 0x00007ffff4704126 in QCoreApplication::init
> (this=this@entry=0x7fffffffcd30) at kernel/qcoreapplication.cpp:727
> #15 0x00007ffff4704186 in QCoreApplication::QCoreApplication
> (this=0x7fffffffcd30, p=...) at kernel/qcoreapplication.cpp:650
> #16 0x00007ffff4ab6ea9 in QGuiApplication::QGuiApplication
> (this=0x7fffffffcd30, p=...) at kernel/qguiapplication.cpp:560
> #17 0x00007ffff50c0c05 in QApplication::QApplication (this=0x7fffffffcd30,
> argc=@0x7fffffffcc7c: 1, argv=0x7fffffffce58, _internal=328704) at
> kernel/qapplication.cpp:562
> #18 0x000000000042d68c in main (argc=1, argv=0x7fffffffce58) at
> /home/matthew/kde/kmines/main.cpp:35
>
> Which I think might be avoidable anyways, as the hints should only read from
> the globals? Migrating first would of course avoid this issue (but see
> below), and I think calling reparseConfiguration after migrating may also
> work. Alternately, tracking down why kminesrc is opened early might be
> another solution.
Unfortunatelly, calling reparseConfiguration doesn't solve the problem.
> >
> > Laurent Montel, the creator of kdelibs4configmigrator, suggests the former
> > procedure (first QCoreApplication, then migration), though.
> If kdelibs4configmigrator uses KConfig itself for anything, then it really
> should only be used after QCoreApplication is created. Doing otherwise is
> very fragile and may break in the future.
>
> Hope that helps,
It seems kdelibs4configmigrator doesn't use KConfig but just copies the files to the \
new location.
Laurent, what's the reason to suggest to do the migration after QCoreApplication is \
created? Might someting breake in the future?
Regards,
Mathias
_______________________________________________
kde-games-devel mailing list
kde-games-devel@kde.org
https://mail.kde.org/mailman/listinfo/kde-games-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic