plasma-framework/src/plasma
Marco Martin d8a1a9eb08 don't regenerate frames when setting every property
Summary:
give frameSvg the concept of repaintBlocked(), that enables and
disables the regeneration of the frame data when a property is set.
the use case is when often, a lot of properties are set one after
the other (such as prefix, enabled borders, size)
collapse the formely similar, but a bit different logic of frame
regeneration is a single function for better maintanability.
QML FrameSvgItem sets repaintblocked when it starts and releases it just on oncomponentCompleted

Test Plan:
plasmashell still starts, autotests still work, all frames are rendered correctly
the destruction of old frames is cutted by 50%. in the qml profiler
the creation time of a framesvgitem slightly improved, on this machine from around 26 msecs to around 21, can still be improved, but at least the code is a bit simpler

Reviewers: #plasma

Subscribers: davidedmundson, plasma-devel, #frameworks

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D4414
2017-02-07 13:08:27 +01:00
..
data SVN_SILENT made messages (.desktop file) - always resolve ours 2017-02-05 06:07:10 +01:00
design The Big Move 2013-02-14 17:17:12 +01:00
packagestructure SVN_SILENT made messages (.desktop file) - always resolve ours 2017-02-05 06:07:10 +01:00
private don't regenerate frames when setting every property 2017-02-07 13:08:27 +01:00
scripting Use less deprecated API 2016-10-17 13:36:51 +02:00
.krazy The Big Move 2013-02-14 17:17:12 +01:00
applet.cpp Don't enforce metadata.desktop, cleanup constructor 2016-10-10 16:28:13 +02:00
applet.h Simplify plugin construction by relying exclusively on KPluginMetaData 2016-10-04 23:56:17 +02:00
CMakeLists.txt Define Plasma PackageStructure as regular KPackage PackageStructure plugins 2016-08-04 19:23:59 +02:00
config-plasma.h.cmake use kwayland for shadows and dialog positioning 2016-10-11 17:21:57 +02:00
containment.cpp consider an empty panel always "applets loaded" 2016-12-21 18:11:51 +01:00
containment.h Don't enforce metadata.desktop, cleanup constructor 2016-10-10 16:28:13 +02:00
containmentactions.cpp Define Plasma PackageStructure as regular KPackage PackageStructure plugins 2016-08-04 19:23:59 +02:00
containmentactions.h Apply the astyle-kdelibs script 2014-04-26 01:48:37 +02:00
corona.cpp don't assume last is is numScreens()-1 2016-07-18 14:47:53 +02:00
corona.h Add missing screenGeometryChanged signal; use in AppletInterface; fix typos. 2017-01-19 03:43:49 +09:00
datacontainer.cpp Fix most of Clazy warnings in plasma-framework 2016-02-29 00:13:41 +01:00
datacontainer.h Use Q_DECL_OVERRIDE where possible 2015-02-13 13:31:58 +01:00
dataengine.cpp [dataengine]If the DataEngine constructor is called with an invalid KPluginInfo object, make sure valid is set to false. 2016-05-19 22:45:29 +03:00
dataengine.h Use Q_DECL_OVERRIDE where possible 2015-02-13 13:31:58 +01:00
dataengineconsumer.cpp Fix most of Clazy warnings in plasma-framework 2016-02-29 00:13:41 +01:00
dataengineconsumer.h Apply the astyle-kdelibs script 2014-04-26 01:48:37 +02:00
framesvg.cpp don't regenerate frames when setting every property 2017-02-07 13:08:27 +01:00
framesvg.h don't regenerate frames when setting every property 2017-02-07 13:08:27 +01:00
Mainpage.dox Update the documentation page with current informations 2015-03-24 15:32:33 +01:00
package.cpp Don't reparse the metadata file if it's already loaded 2016-10-31 12:04:06 +01:00
package.h Don't reparse the metadata file if it's already loaded 2016-10-31 12:04:06 +01:00
packagestructure.cpp Fixed the logic problem of testing whether the job was valid 2016-04-05 09:33:52 +02:00
packagestructure.h migrate to KPackage 2014-12-29 13:56:52 +01:00
plasma.cpp Define Plasma PackageStructure as regular KPackage PackageStructure plugins 2016-08-04 19:23:59 +02:00
plasma.h correctly forward status from applets to containment 2017-01-17 18:07:10 +01:00
pluginloader.cpp use KPluginMetaData::readStringList() 2017-01-03 17:19:10 +01:00
pluginloader.h Deprecate Plasma::Package API in PluginLoader 2016-12-27 18:20:35 +01:00
README The Big Move 2013-02-14 17:17:12 +01:00
service.cpp Remove some warnings 2016-02-29 00:59:44 +01:00
service.h Plasma::Service::operationDescription() should return a QVariantMap 2016-06-27 12:11:25 +05:30
servicejob.cpp Apply the astyle-kdelibs script 2014-04-26 01:48:37 +02:00
servicejob.h Use Q_DECL_OVERRIDE where possible 2015-02-13 13:31:58 +01:00
svg.cpp rename state property in status 2016-06-01 14:47:56 +02:00
svg.h Q_ENUMS -> Q_ENUM and Q_FLAGS -> Q_FLAG 2017-01-14 01:06:28 +01:00
theme.cpp Define Plasma PackageStructure as regular KPackage PackageStructure plugins 2016-08-04 19:23:59 +02:00
theme.h Q_ENUMS -> Q_ENUM and Q_FLAGS -> Q_FLAG 2017-01-14 01:06:28 +01:00
version.cpp [libplasma] Add categorized debug output 2015-12-15 16:56:40 -05:00
version.h Unbreak build of code using plasma-framework 2014-03-18 12:01:36 +01:00

libplasma

This directory contains the classes making up libplasma, which provides the
core framework used by Plasma applications, such as the Plasma desktop shell
and its components. This includes applet and extension definitions and loading,
common GUI elements, data and service interaction, search system, etc.

Domain specific sets of functionality, e.g. for network awareness or sensors,
are not found here but as DataEngine, Service, Applet, Package, Wallpaper,
ContainmentActions, Containment and other plugins.

Commit Guidelines:
* If your patch is not an obvious or trivial bug fix, have it peer reviewed
  by another Plasma developer; http://reviewboard.kde.org is your friend :)

* All code MUST follow the kdelibs coding style, as found at:
        http://techbase.kde.org/Policies/Kdelibs_Coding_Style

* All new public API MUST have apidox written before committing and must go
  through an API review with another Plasma developer. We have to maintain
  binary compatibility, remember!

Unit tests are next to godliness. (Though as you can see, right now libplasma
is hellbound.)

Please refer to the Plasma website (http://plasma.kde.org) and Plasma wiki
(http://techbase.kde.org/Projects/Plasma) for API documentation and design
documents regarding this library.