Issue 270
13th January 2013 by KDE Commit-Digest TeamContributors
Aleix Pol
Martin Cigorraga
Jürgen Appel
This Week...
Statistics
Commits | 2923 by 188 developers |
Open Bugs | 21033 |
Open Wishes | 15770 |
Bugs Opened | 369 in the last 7 days |
Bugs Closed | 530 in the last 7 days |
Commit Summary
Module | Commits |
/trunk/l10n-kde4 |
387
|
/branches/stable |
186
|
/trunk/l10n-support |
41
|
/trunk/www |
28
|
/src/plugins |
20
|
/src/lib |
18
|
/libs/kotext |
16
|
/krita/plugins |
16
|
/template/en |
14
|
/backends/xrandr |
13
|
Files | Developer | Commits |
438
|
Roman Paholík |
146
|
300
|
Laurent Montel |
119
|
201
|
Ingo Malchow |
70
|
174
|
Milian Wolff |
63
|
186
|
Chetan Khona |
62
|
171
|
Jan Kundrát |
61
|
126
|
Christophe Giboudeaux |
52
|
153
|
Burkhard Lück |
51
|
141
|
Ben Cooksley |
48
|
132
|
Patrick von Reth |
48
|
Internationalization (i18n) Status
Language | Percentage Complete |
Portuguese (pt) |
100%
|
Swedish (sv) |
99%
|
Estonian (et) |
99%
|
Ukrainian (uk) |
99%
|
Polish (pl) |
98%
|
Dutch (nl) |
96%
|
Spanish (es) |
96%
|
German (de) |
94%
|
French (fr) |
94%
|
Italian (it) |
92%
|
Bug Killers
Person | Bugs Closed |
Daniel Nicoletti |
61
|
Myriam Schweingruber |
34
|
Jekyll Wu |
33
|
Christoph Feck |
27
|
Vishesh Handa |
26
|
Martin Gräßlin |
25
|
Gilles Caulier |
16
|
Tom Albers |
16
|
Milian Wolff |
16
|
Ben Cooksley |
15
|
Commit Countries
Commit Demographics
Sex
Age
Contents
Bug Fixes | Features | Optimization | Security | Other | |
---|---|---|---|---|---|
Accessibility | |||||
Development Tools | [] | [] | [] | [] | |
Educational | [] | [] | [] | ||
Graphics | [] | [] | |||
KDE Base | [] | [] | [] | [] | [] |
KDE-PIM | [] | [] | [] | [] | |
Office | [] | [] | [] | [] | |
Konqueror | |||||
Multimedia | [] | [] | [] | ||
Networking Tools | [] | [] | [] | ||
User Interface | |||||
Utilities | [] | [] | |||
Games | [] | ||||
Other | [] | [] |
There are 113 selections this week
Bug Fixes
Development Tools
Fix, refactor and cleanup the session locking mechanism.
This is especially needed to break the cyclic dependency between
language and shell which was introduced by the requirement to
call SessionController::tryLockSession from the ItemRepositoryRegistry.
This commit introduces a RAII ISessionLock that is implemented by
shell/sessionlock.{cpp,h}. This lock is passed around as a shared
pointer. All potentially dangerous code paths now take such a
ISessionLock::Ptr argument to verify that the session is properly
locked.
Such a little change, yet it had quite an aftermath... The fix made
it neccessary to refactor lots of other code paths, especially the
crude SessionController::LockSessionState is gone and replaced by
three new classes:
SessionRunInfo, which holds the information about whether a session
is running and if so, what the app's PID and name is.
ISessionLock::Ptr which ensures that a session is actually locked.
TryLockSessionResult (bad name, suggestions?) which holds both,
a SessionRunInfo and a ISessionLock::Ptr. If the latter is non-null
it means that the session was locked. Otherwise the SessionRunInfo
can be queried for why this was not the case.
In addition to that we now also have some more readable API in the
SessionController, most notably isSessionRunning and sessionRunInfo.
Oh and did I mention that I introduced some more unit tests? Yay!
Note that I also removed quite some dead code, most notably in what
was formerly SessionController::handleSessionLocked. The information
about stale lock files and such should never be shown as only the
DBUSLock is actually relevant. The KLockFile is only used to find
the PID + app name of whoever is responsible for locking a given
session ID.
Futhermore I have to say that we should decide on whether to use
QUUid or QString in our API as the type for our Session IDs...
Right now we use a mixture of both but actually rely on QUUid in
dBusServiceNameForSession()...
Finally I also moved the stupid SessionDialog into its own files
but that should be completed and further cleaned up...
Properly parse C++11 reference bindings.
These are ignored in the semantic analysis for now but at least this
way code completion does not break and no annoying errors are shown.
Fix unresolved symbols appearing in PyKDE4.
Apparently the CMake policy responsible for this is getting set back
somewhere in the build system.
Reporter, please close the bug if the issue is no longer applicable. I
can't reproduce it.
plasmoidviewer: respect --containment flag in sizing and scenerect
The normal behavior of plasmoidviewer, which resizes the applet to the
window, is not very useful for testing containments, at it sets the
scenerect and resizes the widget where it is really the containment's
job to take care of the layout.
So, when the --containment flag is set, and a plugin is found:
- do not change the scenerect anymore
- do not resize the widget
- do not wire up applet resize events to our view's scenerect
- set window title to $Applet: $Containment
- change icon to containment's icon
This set of changes makes plasmoidviewer really useful, where it
previously would often flick out of the view and show all kinds of
applet placement madness when used with the --containment flag.
REVIEW:108284
Educational
MarbleRunnerManager: create all runner tasks before launching them
This should avoid hang in case a runner finishes and its address is
reused before the GUI thread has a chance to call the cleanup code.
Fix graphics artifacts when loading graph.
Position of edge values was not updated correctly after creation of
connection curves.
Graphics
Panorama: Various bugfixes for Windows build
Many thanks to Ananta Palani for his help to debug the Windows build
Check if QGLWidget has been initialised successfully before using it.
REVIEW: 108219
KDE Base
various fix for battery plasmoid
Fix access undefined value warning, when calling function in
logic.js, pmSource.data can still be null since it might not connect at
that time.
When brightness is passively changed from outer environment, don't
trigger the dataSource service call with a bool protector called
disableBrightnessUpdate.
Move more code to DataModel.onDataChanged, under the same idea with:
https://git.reviewboard.kde.org/r/108280/ , hence the plasmoid.status
will always be the correct value, the changing of plasmoid.status cause
tray make popup unfocus.
Remove ugly hack of resetBatteryData in logic.js.
Fix some anchor related warning in PopupDialog.qml
FIXED-IN: 4.10
REVIEW: 108355
Respect Lock boolean in configuration
If not set to require password, don't start the grace period timer and
always consider in grace period.
REVIEW: 108425
FIXED-IN: 4.10.1
Fix crash on startup with empty firefox profile
This crash happened when the default browser is set to Firefox, and the
profile is empty. The sqlite db is checked against in match, but never
initialized to zero.
Thanks to einar and tittiatcoke for the detective work. :-)
Slightly reduce the tinting for selected icons and previews
The intention of the tinting was to make it more obvious in icons view
which icons are selected. However, some icons and previews look quite
ugly with the current tinting value of 1.0 (i.e., the value passed to
KIconEffect::colorize). A slight reduction of this value to 0.8 makes
this a little less ugly. However, the real fix is to remove the tinting
altogether and find something better to indicate which items are
selected.
Rework fix for bug 279675 so that the new mimetype is used by KRun too.
When the mimetype has to be refined from the url-filename or suggested-filename,
it's not enough to show the user, we have to also pass it on to the application
and to KRun. Otherwise clicking "open with KWrite" can end up not doing anything,
due to the service->hasMimeType() check in KRun. It also didn't benefit from
the turning of shellscript into text/plain in BrowserRun::handleNonEmbeddable
since the mimetype fixup was done afterwards.
REVIEW: 108277
don't use input windows on Qt < 4.8.3
According to aacid, it's been broken in every Qt version before
REVIEW: 108249
fix random battery cumulative data error update upon resume
In some case, slot connect to dataChanged signal might see wrong data in
data model, so this patch update Cumulative data by using dataChanged signal
of DataModel, this would fix random "fake unavailable" battery upon resume
and reduce useless call to updateCumulative.
REVIEW: 108280
FIXED-IN: 4.10
ResourceWatcherManager: Improve thread safety
The ResourceWatcherManager is accessed by multiple threads at the same
time, and its internal structures can be changed by some of those
threads.
Use a mutex to protect most of its member functions.
Be more careful about null pointers
Check for null pointers before dereferencing (mostly in KDED).
hack in keyboard accel for buttons
horribly ugly in implementation, but until QML gets proper key accel handling
this is probably what we stuck with for now
MetadataFilter: Do not show editable data for contacts and albums
Though it does make sense for the user to be able to tag/rate contacts
and albums, dolphin is not the place to do it from. Specially since
contacts and albums are not displayed by the nepomuk kioslaves.
That would result in the user tagging the contact/album and it then not
appearing in the tag results.
add unit test for crash in code folding (bug311866)
todo: make sure the cursor position is valid (in visible text area)
if the code folding changes. This fix should not be done in
KateViewInternal::regionVisibilityChanged() as then we run into selection
bugs like e.g. http://bugs.kde.org/show_bug.cgi?id=295632
bug tracker: http://bugs.kde.org/show_bug.cgi?id=311866
Fix wrong version for last line of Tile
Code in scaledLoop32bit() has an off-by-one error in computation of the
versions index, causing some images to contain garbage on their last
line. This is visible in Konqueror and Akregator intro pages.
REVIEW: 108246
Applethandle fixes
- Resize MouseArea moves to top-right
- fix up resizing function for this
- fix layering of action buttons and drag area
- pressing and releasing applet handle's buttons shifts them 1px in both
directions
We still need to reserve a bit of space for the applet handle, but we're
getting there. Also minimumSizehints need to be checked.
This makes it kind of work, though.
Use window size for offscreen texture size in screenshot effect
Effect used the display size which caused windows being larger than
either width or height not to be captured correctly.
Now it uses the window size for the offscreen texture which also requires
to adjust the modelviewprojection matrix.
As an unrelated change the pointer to GLRenderTarget and GLTexture are
changed to a QScopedPointer and some variables which got moved around
are consted.
FIXED-IN: 4.11
REVIEW: 108258
Fix adjustPath(AddTrailingSlash) to preserve empty paths
As per the documentation.
FIXED-IN: 4.10
REVIEW: 108215
Fix information panel interpreting html tags
Only fixes the most obvious file name, the other entries in the table
probably have to be fixed in the FileMetaDataWidget.
REVIEW: 108307
(cherry picked from commit 3d7d900d2830c71255ff8c02f5f7439224cd4122)
NepomukSearch: Always stat the file before listing it
This removes the optimization that we use the pre-fetch the stat results
from the database. This optimization is being removed because we may
have old entries in the search results for files that no longer exist.
The filewatch doesn't always work, also removable media handling doesn't
always save it under filex.
( With 4.10 we have removed the filewatch - InvalidFileResourceCleaner )
We do not want to show file results that do not exist.
Also always fetch the nie:url instead of it being optional
Fix Bug 233335 - Wrong icons selected after pasting files and renaming them (because there exists items with it's names
Fixed the "same" buggy behavior when dropping files/folders
Select also putted files (PUT operation - SimpleJob) - e.g. Paste content from clipboard
REVIEW: 107351
Fix fileindexer crashing for broken pdf files
Some broken pdf files can't be handled by libpoppler.
Due to a missing pointer check the plugin crashes. Now no title is
extarcted from the first page, but everything else works without crash.
KDE-PIM
Fix Bug 311688 - The "Export KMail Data" action uses icon "backup-mail",
which is unavailable
We don't have icons for it. So Use kmail for 4.10
We will ask for new icon
FIXED-IN: 4.10
Write OPML synchronously
Otherwise we cannot guarantee consistency and races might occur,
so let's remove this complexity of delayed write back,
which might not even be needed.
Office
Correctly initialize the smoothness options
Turn off table and other text features in Krita
REVIEW:108298
Fixed several bugs of transforming Shape/Paint layers
This patch fixes several problems:
1) Fixes the updates of the clone layer, when changing
its source's mask
2) Fixes updates for undo of a transformation of a layer
having both clone and a mask
3) Fixes Mirroring of a paint layer with odd size
4) Fixes Undo for transformations on Shape Layers
5) Adds a Unit Test for all this.
,312734,312742,312750
Fixed Perspective Transform Worker to work properly
1) The class is cleaned up (use QTransform instead of explicit matrix computation)
2) The usage of split rects make the transformation very-very-very fast
Shape moving restrictions based on anchor properties.
This is the page anchors equivalent of the char and paragraph anchors code we
already have.
This makes a difference both on initial layout (nice improvements)
and on interactive moving of page anchored shapes.
This commit also fixes the default anchoring properties to be the same as in LO.
This commit also fixes it so the page anchored iages doesn't leave empty rects on
page 1 after reload
REVIEW: 108358
Fix an issue where a reference to a deleted row (or column) was not detected properly.
Also adds a test-case for the other problem reported in this bug, but I can't reproduce the bug in that situation.
Remove old xmlGUI code that's no longer needed.
Recent changes in kdelibs (bug 306258) seem to have caused a
situation where user changes to the toolbar resulted in an unmerged
ui.rc. http://forum.kde.org/viewtopic.php?f=200&t=109528
Patch provided by Albert Astals Cid and resolves the issue.
According Gopalakrishna this commit is needed to fix the inability to remove blocks from list.
Fix wrong style applied on backspace
When using backspace, we keep the char format of the deleted char.
This should not apply when deleting across the newline boundary.
Fix problem that prevents depths of cells to be calculated properly when cells are edited.
This was especially a problem if they are changed from a formula to something that is not a formula.
Also fixes a problem with DependencyManager::Private::dump(), and fixes KoRTree API docs to match
the implementation (although it would be better to fix the implementation to match the docs).
Use new app icon names in Flow, Sheets, Stage, Words
Icon filenames were changed in 2c94313b0891571a071dc5729eb0b0d3644c00fb ,
but that commit missed to also adapt the places where the icons are referenced
Multimedia
DirectoryLoader, FileView: fix broken Copy/Move to collection
I accidentally broke this in commit 7f1f9f606ad1af5b3d1.
This doesn't go into ChangeLog, because the bug was introduced after
2.7 Beta was released. Thierry, please test that this commit fixes
your problem.
FIXED-IN: 2.7
AudioCdCollection: set composer of all tracks
...most Amarok code assumes it is non-null. As CDDB doesn't provide the
information, we set empty composer, which is "Unknown Composer" for
display purposes.
BUGFIXES:
* Audio CD: fix crash due to no composer being set.
FIXED-IN: 2.7
Fix duplicate-name bug in creating playlist folders
Previously, the code sorted numbers as string when determining the
current largest number of duplicate folders. The code now uses
std::max_element on a list of integers to circumvent that problem
FIXED-IN: 2.7
REVIEW: 108245
tageditor: Mark bitrate and length as read-only.
Seems to look OK with Oxygen and even Qt's "Cleanlooks" themes.
Apply patch #76256 from Roman I Khimov to use crop factor from camera, not from lens data.
Lens crop factor in DB only tells us which crop factor was used for lens
calibration data, but it has nothing to do with shots made on random user's
camera. So the default behaviour should be to use camera's crop factor and only
fallback to lens data if there in no data present for camera. As "this should
not happen" it's appropriate to spit out some debug message in this case.
Ref: http://lensfun.berlios.de/manual/el_lens.html
Ref: http://lensfun.berlios.de/manual/el_camera.html
FIXED-IN: 3.0.0
CC
CC
CC
CC
CC
CC
Fix amarok starts at beginning of playlist if you previously stopped during a track
FIXED-IN: 2.7
Apply patch #76254 from Roman I Khimov about lensfun interface which don't mangle cropFactor if it's set.
This behaviour was introduced by polish commit bebef401e147a00f859cb81774f8498a0623eee5.
With this branch present we always get cropFactor of
-1.0 in LensFunFilter::filterImage() and given that lensfun library just uses
crop factor of 1 which leads to obviously wrong calculations for cropped
cameras.
FIXED-IN: 3.0.0
Apply patch #76255 from Roman I Khimov to don't pass crop factor as scale factor to lensfun.
Sixth parameter to Initialize() is actually a scale factor which has nothing
in common with crop factor. I think it's safe to assume that we want no
scaling from lensfun and thus use the value of one.
Ref: http://lensfun.berlios.de/manual/structlfModifier.html
FIXED-IN: 3.0.0
CC
CC
CC
CC
CC
CC
PrettyItemDelegate: fix visual overflow of the queued track indicator
This is a slightly tweaked version (visually and behaviourally) of
Riccardo Ferrazzo's patch, thanks for it!
BUGFIXES:
* Fix queued track indicator overflow, patch by Riccardo Ferrazzo.
FIXED-IN: 2.7
REVIEW: 107796
Networking Tools
[ #18497 ] Fix ringtone dialog
[ #19014 ] Fix mute button
Fix error when loading the QML plasmoid in Plasma Active. Thanks to Marco
Martin for this fix.
Fix showing notification in busy and away status
Based on Murphy patch, thanks!
Use better way of setting NowPLayingListWidget size
The combination of setFlow() and the old way the size of the
widget was calculated caused Qt layout system to end up in
endless recursion (and subsequent crash).
Reviewed-By: David Edmundson
[ #19055 ] Improve wizard message to relfect the potential GUI freeze
Check that resources are not being monitored already.
If a file or path is monitored already by QFileSystemWatcher, it warns
about that using a qWarning.
Utilities
Add a HACK to work around Plasma not setting the active focus when the plasmoid is shown
Fix route times, store as QDateTime, auto remove city names
Use a list of QDateTime values instead of QTime for RouteTimes.
This fixes wrong route times and works with route times at
different dates.
Add possibility to store user data for network requests in
scripts. The user data gets send to the slot connected to the
finished() signal. It gets used by the HAFAS base script to let
the parser know whether arrivals or departures have been
requested.
Fix "origin" strings for HAFAS arrivals,
they were actually targets.
Enable AutoRemoveCityNames feature for HAFAS providers, in case
no short stop names were available. Rename "enum" script object
to "enums", "enum" may cause problems (keyword).
fix config loading
vlc by default for some reason refuses to load configuration options, so
tell it not to ignore the configuration when we are using our own vlc.conf.
Thanks to Ivan Chernyavsky for pointing this out.
Games
Make scores appear in the correct difficulty level
FIXED-IN: 4.10
Features
Development Tools
Show actual AST size in the debug utility cpp-parser.
This is done by walking the tree and summing the size of the
encountered nodes.
The output is insofar interesting as it shows the discrepancy between
allocated memory and required memory of about 100% - i.e. we need
twice as much memory as the AST is actually needing. This is mostly
due to backtracking in the parser: When we encounter an invalid node
somewhere we might bubble up the parse chain and continue down a
different path. Any allocations in the memory pool are 'lost' this
way and not reclaimed until the whole pool is discarded.
We might want to think about reclaiming such nodes somehow. So far,
I did not come up with an easy, fast API to achieve this result
though...
make the commit dialog use a layout rather than hand position things
also general code improvement:
* don't expose members of CommitDialog as public but enapsulate access to the text
* don't use smart pointers where they are never used as such
this was evidently so critically important that it was blocking movement of the
entire plasmate repo out of kdereview. to celebrate that, i wrote this patch whilst
sitting on the toilet. seemed appropriate somehow.
Educational
Add kml list style and ballon style writers.
REVIEW: 108211
mathematical sidebar improvements
- remove the possibility to show/hide numerals and functions separate
instead only the mathematical sidebar can be shown/hidden
- added animation for show/hide sidebar
button to toggle compact mode and dummy buttons for settings and help
Graphics
Implement infrastructure to upload to galleries in Imageshack
Due to some issues with the api, currently, the uploads to galleries
are disabled.
Improved the ui and solved some minor bugs.
Fetch the list of user galleries.
Remove videos from the KPImagesList, even video uploads are supported.
KDE Base
Added a method to XRandRScreen which returns the current size
I'm not sure this is the right way to put it in the new backend, but it
very seems like it.
Please dan, move the method elsewhere if needed.
Add walk through desktops shortcuts to Virtual Desktops KCM
FIXED-IN: 4.11
REVIEW: 108287
Use PlasmaComponents.Dialog for ModeSelectionWidget
PlasmaCore.Dialog was eating mouse clicks for some reason, but
wrapping the ModeSelectionWidget to PlasmaComponents.Dialog works.
And it looks better.
Store last user details on a per display basis
REVIEW: 107950
shadow override is both kwin specific and a no-op now
kwin changed .. 'nuff said. :) we're doing shadows a bit differently now
with kwin and it doesn't require windowsystem API for it. i do think that
it would make sense to (eventually) provide API for doing shadows in the
New(tm) way.
Add appmenu support to laptop kdecoration client
Port screenlocker greeter app away from Kephal
REVIEW: 108318
Disable only needed CRTC, read below for more information
Since the begining we have been doing it wrong to get kscreen working
ASAP, we were disabling all outputs that were being updated, which at the
long run created more problems than it solved.
This commit reverts the hacks needed to make the hack work (LOL) and
makes the code work as follow:
-Disable all outputs that need disabling (not used)
-Update all outputs that need update (mode/rotation/pos changed)
-Disable all outputs that previous RECT doesn't fit the new screen one
for example if a output was extended to the right and now is not, the
X will be at XXXX while the new screenSize is YYY
-Enable all outputs that need to be enabled (they were not used before)
Add rowspan/colspan support for sensor displays in ksysguard
REVIEW: 107970
FIXED-IN: 4.11.0
use Plasma::Dialog for brightness osd
REVIEW: 108222
Track painted areas in Thumbnail Aside effect
Following the approach of ShowPaint effect by tracking the actual painted
regions per window to determine whether the painted area intersects with
one of the thumbnails.
FIXED-IN: 4.10
REVIEW: 108289
Gather support information about screens
Adds a section about screens to supportInformation containing:
* whether multi-head is used
* in case of multi-head the screen number
* the number of screens
* geometry per screen
That should hopefully end the two often asked questions about the user's
screen setup, especially if they say they use multi-head.
REVIEW: 108363
Introduce property "visible" on EffectWindow
This property can be used to check whether a window is currently visible
to the user, that is:
* not minimized
* on the current desktop
* on current activity
This is a common need for various effects.
REVIEW: 108341
KDE-PIM
Merge Facebook resource
This is the resource part of kde:akonadi-facebook with some
improvements and fixes. Building this resource is conditioned
by presence of LibKFbAPI library, found in extragear/libs.
This means that Facebook resource is now installed by default.
REVIEW: 107021
DIGEST
Office
Implement actions to mirror all layers in an image.
New script: fixsrc.py that fixes trivial errors in the sources
The script is supposed ot target errors pointed out by the Krazy
source checker at englishbreakfastnetwork.org. It is potentially
useful in all of KDE and not just in Calligra.
This first version does:
- add newlines to files that don't end in it.
FEATURE: Tool to automatically fix trivial errors in source files
DIGEST: New tool to automatically fix trivial errors in source files
Flow, Karbon, Stage and Sheets: use the currently set size units in the pagelayout dialog
Don't let Words be the only one to do it :)
REVIEW: 108221
thanks inge for review
Multimedia
Support reading/writing Ogg Opus tags.
I say Ogg Opus since it will later be possible to store Opus audio
within a Matroska container, instead we support Opus in an Ogg container
(which is what is recommended/assumed by the reference tools and the
standard).
This does not add playback support if the underlying Phonon backend
doesn't support Opus.
I've tested by adjusting metadata fields of various Opus files I've
encoded.
The Taglib feature that supports this has not been released yet as far
as I can tell from git, so we simply check to see whether the header we
need was installed.
EngineController: various Audio CD playback fixes
BUGFIXES:
* Various improvements that should result in more stable Audio CD
playback.
Many things originally pointed out by Harald, our lord-president.
FIXED-IN: 2.7
DIGEST: Amarok resurrects Audio CD playback, at least with phonon-gstreamer
Networking Tools
Rekonq Migration to Nepomuk2
Ran the Nepomuk migration script and added a directory with code that
has not yet been ported to Nepomuk2. Also did some CMake changes to be
able to drop the config-nepomuk.h.cmake file.
REVIEW: 108152
Add option to configure IPv6 Privacy Extension
REVIEW: 108064
add support for ARD (Apple Remote Desktop) authentication
- it does not fail silently while authenticate (blue background forever))
- minor fixes for VNC plugin qt-only version
Utilities
Enable "Show printers shared by other systems" when on CUPS 1.6, it does support it
Adds a Help menu to Apper
Other
Update streaks after loading a saved state
Add support for Wacom Intuos5 M Pen pad
Optimization
Development Tools
Introduce a thread local memory pool cache and refactor the code.
This optimizes the speed of our allocator, especially for the case
of multiple repeated constructions of memory pools as is being
done in the ExpressionParser. Funnily enough, I also managed to
increase the performance of the 'normal' operation for a single pool
with many allocations as is done in the full file parsing.
The way it works is that we keep a list of free, allocated blocks
around per thread. Right now, we keep up to 32 blocks of 64K around,
i.e. up to a total of 2MB per thread. This memory is only reclaimed
once the thread finishes. In KDevelop's case this means: never until
the app is closed. Still, I think up to 2MB per thread is not a big
deal and we could potentially decrease this.
Furthermore we should try to share these memory blocks between the
different language plugins. Right now most other lang plugins use
KDevelop-PG-Qt's allocator. I'll investigate how to change that.
New numbers are:
RESULT : TestPool::benchManyPools():
0.0043 msecs per iteration (total: 71, iterations: 16384)
(approx 9x as fast as before)
RESULT : TestPool::benchManyAllocations():
0.000038 msecs per iteration (total: 80, iterations: 2097152)
(approx 1.8x as fast as before)
For the expression parser benchmark the numbers are now:
RESULT : TestExpressionParser::benchEvaluateType():"global-int-number":
- 0.055 msecs per iteration (total: 57, iterations: 1024)
+ 0.017 msecs per iteration (total: 70, iterations: 4096)
RESULT : TestExpressionParser::benchEvaluateType():"global-long-number":
- 0.056 msecs per iteration (total: 58, iterations: 1024)
+ 0.018 msecs per iteration (total: 74, iterations: 4096)
RESULT : TestExpressionParser::benchEvaluateType():"global-long-long-number":
- 0.057 msecs per iteration (total: 59, iterations: 1024)
+ 0.019 msecs per iteration (total: 78, iterations: 4096)
RESULT : TestExpressionParser::benchEvaluateType():"main-a.b":
- 0.074 msecs per iteration (total: 76, iterations: 1024)
+ 0.035 msecs per iteration (total: 72, iterations: 2048)
The other benchmarks stay the same, mostly because they manage to
circumvent the need for a full text parsing and thus the allocator.
Also note: In both callgrind and perf the rxx_allocator::allocator
was a hotspot when looking at "duchainify path/to/kdevelop" and
that mostly due to the repeated calls to ExpressionParser for simple
one-word strings which still allocated a full block of memory. Now
this can be reused and thus operates faster. Saldy, timing the run
of duchainify though does not show any noticeable speedup.
Add a benchmark to compare ways of Path construction from local path.
It turns out that contrary to my expectations, using the KUrl::KUrl
ctor is just as fast as e.g. QUrl::fromLocalFile or KUrl::fromPath.
Add a benchmark for the rxx_allocator.
This comes in two flavors:
1) A single pool and multiple allocations of 64 bytes. Somewhat
representative for the creation of the big AST tree.
2) Multiple pools with just a few allocations, as done by the
ExpressionParser.
Current results on my machine in RelWithDebInfo mode:
RESULT : TestPool::benchManyPools():
0.039 msecs per iteration (total: 80, iterations: 2048)
RESULT : TestPool::benchManyAllocations():
0.000068 msecs per iteration (total: 72, iterations: 1048576)
KDE Base
SimpleIndexing: Do not save the unix file ownner, group and permissions
They were for an optimizations in the nepomuksearch query slave where
these properties were fetched so that we did not have to stat the file.
However, now we no longer pre-fetch them cause we always need to stat
the file in order to check if it exists in the file system.
Improved resolving whether a window is on local machine
Most windows use the hostname in WM_CLIENT_MACHINE, but there are windows
using the FQDN (for example libreoffice). So instead of "foo" it is
"foo.local.net" or similar. The logic so far has been unable to properly
determine whether windows with FQDN are on the local system.
In order to solve this problem the handling is split out into an own
class which stores the information of hostname and whether it is a local
machine. This is to not query multiple times. To determine whether the
Client is on the local system getaddrinfo is used for the own hostname
and the FQDN provided in WM_CLIENT_MACHINE. If one of the queried
names matches, we know that it is on the local machine. The old logic to
compare the hostname is still used and getaddrinfo is only a fallback in
case hostname does not match.
The problem with getaddrinfo is, that it accesses the network and by that
could block. To circumvent this problem the calls are moved into threads
by using QtConcurrent::run.
Obviously this brings disadvantages. When trying to resolve whether a
Client is on the local machine and a FQDN is used, the information is
initially wrong. The new ClientMachine class emits a signal when the
information that the system is local becomes available, but for some
things this is just too late:
* window rules are already gathered
* Session Management has already taken place
In both cases this is an acceptable loss. For window rules it just needs
a proper matching of the machine in case of localhost (remote hosts are
not affected). And the case of session management is very academic as it
is unlikely that a restoring session contains remote windows.
FIXED-IN: 4.11
REVIEW: 108235
KDE-PIM
Stay away from nested event-loops.
This was potentially using a lot of memory, as the foreach loop would
result in n jobs which aren't freed until the end of the function (and n
can grow to the amount of items in the akonadi db). Further, collections
were potentially repeatedly fetched.
This patch should therefore not only remove the nested event-loops, but
also improve performance and memory usage.
Office
Better solution for KoDocumentInfo and content in documents.
When changing the current author we only update the KoDocumentInfo if the document has been
modified or is empty.
On first modification we make sure the KoDocumentInfo reflect what the author profile says
This makes sure we can work as a viewer still, showing the last author, but as soon as the user
starts to edit the document the document info/textvariables are updated.
It may sound simple, but it took some soul searching to convince me this is the right approach.
Well that and thinking of the best way to implement it.
What this patch does NOT do is update the current author selection menu when new author profiles
are created, and document also doesn't reflect changes to current profiles. This is because by
design the author profiles are shared across all calligra applications, so in order to accomplish
this we need to listen to changes to the config, and call KoDocumentInfo::updateParameters().
Multimedia
Rewrite algorithm for grouping by time:
- sort list by date, dont take this state for granted
- iterator-based on read-only list, less expensive than list editing
Works for me, testing appreciated.
Security
KDE Base
XIFreeDeviceInfo of NULL crashes, don't do it
Networking Tools
improve url parsing
- KUrl does a way better job than manal string splitting... (e.g. password / username handling)
Other
Development Tools
Add Path::isDirectParentOf which is a faster path.parent() == parent.
This method does not require any temporary allocations and should
thus be preferred over the previously used path.parent() == otherPath
idiom.
Remove KUrl-taking ctors from project items and port the usages.
Educational
Move scene size computation to graph scene.
Make clear separation between data storage at Document and its
visual represenation at GraphScene. (Including a nice reduction
of hacky code.) This finally fixes the problem of a "wobbling"
whiteboard when creating data elements.
Whiteboard size restriction on longer needed.
The new implmentation allows moving of data elements over whiteboard
borders and automatically adjust whiteboard to those changes.
Legend was migrated to usage of Qt WebKit (QWebView)
Guys, we have done it! Now MarbleLegendBrowser is migrated!
REVIEW: 108282
REVIEW: 108251
REVIEW: 108239
REVIEW: 108216
KDE Base
Adjust include orders in DrKonqi
It goes in the order of : config-drkonqi.h, self.h , Qt headers, KDE Headers,
and finally DrKonqi headers
KDE-PIM
IMAP: Remove support for the experimental QRESYNC-ARRIVED extension
It looks like there isn't much support for this proposal among the IMAP people,
so let's focus on improving the 5162-bis instead.
Office
Sync display text with edit text for KoProperty's {Date,DateTime,Time}Edit (using QLocale for now)
also:
* paint top border line
* add min & max options to DateTimeEdit
REVIEW: 107890
thanks jarosław for review
Other
fix location of qimageblitz and qca