Issue 315
24th November 2013 by KDE Commit-Digest TeamContributors
Alex Fikl
Giacomo Barazzetti
This Week...
Statistics
Commits | 2070 by 152 developers |
Open Bugs | 21216 |
Open Wishes | 15923 |
Bugs Opened | 266 in the last 7 days |
Bugs Closed | 388 in the last 7 days |
Commit Summary
Module | Commits |
/trunk/l10n-kde4 |
165
|
/branches/stable |
121
|
/trunk/l10n-support |
54
|
/lib/marble |
14
|
/tags/KDE |
14
|
/trunk/www |
14
|
/doc/index.docbook |
13
|
/src/lib |
10
|
/krita/ui |
10
|
/kate/pate |
9
|
Files | Developer | Commits |
342
|
Laurent Montel |
129
|
156
|
Gilles Caulier |
54
|
147
|
Yuri Chornoivan |
52
|
141
|
Boudewijn Rempt |
49
|
144
|
Sven Brauch |
48
|
144
|
Burkhard Lück |
48
|
126
|
Aleix Pol Gonzalez |
42
|
87
|
Albert Astals Cid |
37
|
102
|
Alex Turbov |
34
|
96
|
Shantanu Tushar Jha |
33
|
Internationalization (i18n) Status
Language | Percentage Complete |
French (fr) |
98%
|
German (de) |
98%
|
Dutch (nl) |
97%
|
Estonian (et) |
93%
|
Galician (gl) |
92%
|
Italian (it) |
91%
|
Danish (da) |
89%
|
Hungarian (hu) |
88%
|
Catalan (ca) |
86%
|
Greek (el) |
84%
|
Bug Killers
Person | Bugs Closed |
Christoph Feck |
104
|
Jekyll Wu |
47
|
Christian Mollekopf |
33
|
Gilles Caulier |
18
|
Thomas Lübking |
12
|
Ralf Habacker |
10
|
Myriam Schweingruber |
10
|
Dennis Nienhüser |
7
|
Sandro Knauß |
7
|
Boudewijn Rempt |
6
|
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 70 selections this week
Bug Fixes
Development Tools
Resize all selected widgets, not only the one below the cursor.
Do not delete anonymous contexts of instantiations.
This "fix" is ugly, but similar to what was done before in the
declaration builder which we happily live with since years.
So, better than crashing, lets workaround this nasty issue.
Support passing arguments to the PEP8 checker.
REVIEW:113989
Recursive crash fix opening refactoring assistant.
Educational
Manual owncloud sync button is freezed right way
Once you start manual sync, 'Sync now' button is disabled and will
be enabled again as soon as sync had finished or after 30s timout
REVIEW: 113955
Map textures are updated in time
When you try to change a property in legend (like Relief) it's
getting updated only after dragging map plot. But it should get
updated as soon as possible after property set
REVIEW: 113950
Graphics
Reload metadata filters with right config section.
Fix metadata filter parsing in metadata list view. I don't know what have changed in time here to break this code. At least, code is more robust now.
In digiKam, use AlbumSettings signal to force metadata viewer to reload filters
In Showfoto, use ApplySettings to force to reload filters
FIXED-IN: 4.0.0
KDE Base
Add a workaround to avoid a crash produced by a GCC bug
This bug: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58800
in nth_element makes QtConcurrent::blockingFilter crash since underneath
QtConcurrent uses QtConcurrent::Median which uses nth_element.
We need the workaround so we can continue working on
kde-workspace/frameworks without having kded5 crashing.
Fallback to XRender if scene-graph uses GUI thread for OpenGL rendering
This is a workaround fo QTBUG-34898 and affects the VirtualBox driver
and SandyBridge Mobile. OpenGL compositing is just not possible and
crashes as soon as there is anything rendered with QtQuick. This change
should be reverted once the Qt bug is fixed.
To nevertheless use OpenGL one can as always use the KWIN_COMPOSE env
variable, though this will result in crashes. An alternative is to set
QT_OPENGL_NO_SANITY_CHECK which forces Qt into using the threaded
rendering. At least for Sandybridge this seems to be a workable solution
as it's only causing flickering in fullscreen and KWin doesn't use any
fullscreen QtQuick elements.
Better handling for making the compositing OpenGL context current
With QtQuick2 it's possible that the scene graph rendering context either
lives in an own thread or uses the main GUI thread. In the latter case
it's the same thread as our compositing OpenGL context lives in. This
means our basic assumption that between two rendering passes the context
stays current does not hold.
The code already ensured that before we start a rendering pass the
context is made current, but there are many more possible cases. If we
use OpenGL in areas not triggered by the rendering loop but in response
to other events the context needs to be made current. This includes the
loading and unloading of effects (some effects use OpenGL in the static
effect check, in the ctor and dtor), background loading of texture data,
lazy loading after first usage invoked by shortcut, etc. etc.
To properly handle these cases new methods are added to EffectsHandler
to make the compositing OpenGL context current. These calls delegate down
into the scene. On non-OpenGL scenes they are noop, but on OpenGL they go
into the backend and make the context current. In addition they ensure
that Qt doesn't think that it's QOpenGLContext is current by calling
doneCurrent() on the QOpenGLContext::currentContext(). This unfortunately
causes an additional call to makeCurrent with a null context, but there
is no other way to tell Qt - it doesn't notice when a different context
is made current with low level API calls. In the multi-threaded
architecture this doesn't matter as ::currentContext() returns null.
A short evaluation showed that a transition to QOpenGLContext doesn't
seem feasible. Qt only supports either GLX or EGL while KWin supports
both and when entering the transition phase for Wayland, it would become
extremely tricky if our native platform is X11, but we want a Wayland
EGL context. A future solution might be to have a "KWin-QPA plugin" which
uses either xcb or Wayland and hides everything from Qt.
The API documentation is extended to describe when the effects-framework
ensures that an OpenGL context is current. The effects are changed to
make the context current in cases where it's not guaranteed. This has
been done by looking for creation or deletion of GLTextures and Shaders.
If there are other OpenGL usages outside the rendering loop, ctor/dtor
this needs to be changed, too.
Make the "Create New..." menu in the "item context menu" work again
Since https://git.reviewboard.kde.org/r/111989/, the "Create New..."
menu in the context menu that appears when right-clicking a folder was
not a child of the DolphinMainWindow any more, but of the context menu
itself. This is the reason why the dialog that asks for a file name
when choosing one of the "Create New..." options disappeared
immediately.
This patch makes sure that the main window is the parent of the
"Create New..." menu again.
REVIEW: 113930
Do not delete old about if old and new are the same.
If set new about dialog using the same pointer, the memory will be cleaned.
For example, double click in system settings tree mode will cause crash.
FIXED-IN: 4.12.0
(cherry picked from commit 823b13c35a19bc61735eba986d10eadb4180a613)
Crash protection against null layer.
FIXED-IN: 4.11.4
Track the currently active module, and don't try to change module if it is the same module.
This prevents a module from being closed and then immediately reopened.
KDE-PIM
Do not try to sync metacontact which has display name source from NULL contact
FIXED-IN: 4.12
Do not try to sync metacontact which has display name source from NULL contact
Recognise shared annotations.
The IMAP Resource exposes the annotations now with a /shared prefix.
Always reset doSslFallback.
Otherwise doSslFallback will remain true if the errors are ignored, although a connection is established.
If we then receive an error from the server (e.g. due to disconnect), the session
will go into a reconnect frenzy.
FIXED-IN: 4.11.4
The store job can fail if the itemset is empty.
Since we're too lazy to check what's available, we simply ignore errors.
Any actually IMAP compliant server shouldn't require this step anyways.
Office
Remove wrong warning about non-rgb resource images
It is perfectly fine, in fact, by design that some resources (notably
brushes) are QImage::Format_Indexed, so we shouldn't warn if the user
selects one of those in the brush editor.
I have reviewed all places where KoResource::image() was used and found
that the only place where there was code expecting an RGB image was
KoResourceItemChooser::updatePreview, and that is in when we convert
an rgb image to grayscale in case the d->grayscalePreview is true.
That is only the case in the brush editor's texture selector.
This also means we can handle non-rgb patterns again -- many are mono
or indexed, and that is fine.
Do not try to read the mask beyond its end
Multimedia
Remove QGLFunctions as it's only needed for OpenGL/ES and might crash.
FIXED-IN: 2.8.1
BACKPORT
Networking Tools
improvement on urlbar suggestions
STEP 1: clean up!
- remember deleting ASAP the UrlSuggester
- remove preview label icon to let loading being faster
- remove unused opensearch inventories
- let ESC key on suggestions behave like major browser
(restoring original string)
Games
stop the animation when the main window is about to be closed.
Stopping the animation avoids a crash, because the animation is a
singleton. If it is a variable of the mainwindow, then it will be
stopped/deleted before the mainwindow is deleted.
FIXED-IN: KDE/4.11.4 KDE/4.12
Features
Development Tools
OverridesPage: Merge the two last columns
It doesn't make sense to display checkable boxes for {signal, slot} in
case it doesn't do anything. Instead, just print the type of the
function as string.
Added a config dialog to pausemusic plugin
Before this it was not possible to change the pause condition (was a TODO).
basic code completion for string formatting options
REVIEW:114030
GCI-TASK:6364660764770304
CodeCompletion ImplementationItem: extend to support member variables
Example:
class A {
protected $x = 1;
}
class B extends A {
}
this change will allow overriding $x in B by adding "protected $x = "
Educational
new runner plugin to parse NMEA files using gpsbabel as backend
REVIEW: 113998
Graphics
RAW preview in gwenview
It uses KDcraw to extract the embedded jpeg preview (most of the raw formats
contain it for the purposes of quick viewing the photos on the camera display)
or loads half-scaled preview (otherwise) so it is fast, implementing was quite
easy and theoretically it enables gwenview to support everything dcraw supports
(I haven't found a raw file that gwenview doesn't show with this patch). The
patch does not perform full demosaicing nor any tweaks (set white balance or so)
and I don't think it shall - digikam, darktable or rawtherapee are much more
suited for developing the 'digital negatives'.
The patch enables support for Nikon NEF and NRW formats, Canon's CR2 and CRW,
Pentax PEF, Sony ARW, Fuji RAF, Olympus ORF, Minolta MRW, Panasonic RW2, Samsung
SRW and Adobe DNG. If you want to try another format, just adding its MIME type
to the list in lib/mimetypeutils.cpp shall be enough.
The patch is feature-complete (generating proper thumbnails and viewing the raw
images incl. EXIF metadata) and well usable.
REVIEW: 113397
Add GoogleDrive and Dropbox export plugin
KDE Base
introduce a 'locked' property for the qml lock screen
if password locking is turned off, this lets the locker not show a
password unlocker (e.g.)
if password locking is on but there is a grace period, then the
property gets set once the grace period times out and the locker
can show the unlock UI
Conflicts:
ksmserver/screenlocker/greeter/greeterapp.cpp
ksmserver/screenlocker/greeter/themes/org.kde.passworddialog/contents/ui/main.qml
Implemented as a Python plugin.
add option to hide view scrollbars ondemand
in case she likes the gui minimal, let her choose
between hide always, never and on demand
REVIEW: 114057
GUI: new option in configuration Appearance->Borders->Scrollbars Visibility
Make devicenotifier "mostly" work
This makes the devicenotifier work, including showing removable devices,
changing the config, changing status accordingly, reacting on newly
plugged in and removed devices.
- plasmoid.configuration seems broken in the systray, hardcode and warn
for now
- add compactRepresentation Component
- use PlasmaCore.IconItem inside that
- wire up setPopupIconByName to this using a property
A few things need to be fixed elsewhere first, but this makes it mostly
functional, and is a nice step forward.
screenshot: http://i.imgur.com/EaAH5in.png
DIGEST:Make device notifier work in Plasma 2
vimode: add ability to specify "!" for q command
now supports: wq, wqa, wqall, q!, qa!, qall!
REVIEW: 114039
Restore SystemSettings classic mode
KDE-PIM
Start to implement import vcard
Office
Start loading all the resources when we create the KisPart
This loads things like patterns nicely in the background while the user
is considering what to do with the startup screen, instead of during
view creation (which is then blocked until the last resource is loaded).
Make records in reports sorted according to the sorting of the query
Probably applies to forms as well.
Multimedia
Highlight for playlists
Networking Tools
improvements on urlbar
STEP 2:
- work & fix on search engine favicons
- simplify code (and remove dead one)
- API clean up
- delete ASAP list items and suggestions
- let the URL in the suggestions be an hard grey
Improve Previous/Next Conversation links in LogViewer
Use Older/Newer Conversation instead, as it's more clear that way
Games
Group messages by turn number.
All messages logged to the messages dock now are grouped by turn number
for faster visual recognition.
REVIEW: 113929
GUI:
Add production and fleet size to standings.
The standings overview now contains the current production and the overall
fleet size (planet defence plus attacking fleets) of each player.
This is implemented in Konquest 2.3.
FIXED-IN: 4.13
REVIEW: 113914
GUI:
Other
Support only one SIM card
Fix crash during initialization of private class
Optimization
Development Tools
Refactor decoding of clip data
Decoding of UMLObjects now uses the same code path on all clips. Fixes that
recently went to clip1 are now also active for clip2 (diagrams). List view
items are never decoded, but created in response of a signal of new UMLObjects.
When pasting clip2 in the same file, only the diagram gets duplicated and not
all contained UMLObjects, like described in feature request 85807.
Optimize: Remove obsolete duchain locks and constify statics.
The locks where apparently historically required, but nowadays its
perfectly fine to operate on AbstractTypes which are not part of
the duchain (yet). This is the case for the expr. visitor, which
just creates new types. This pattern is used in other areas as well,
so I'm fairly confident I don't break things that way. I also success-
fully parsed my big session froms cratch with this patch applied.
Still, better safe than sorry, so I put it into master.
The constifying of the statics should be a no-brainer.
Educational
delay reading of bookmarks to reduce startup time
KDE Base
Save memory by sharing QStrings in UDSEntry
If many UDSEntries are received from a kioslave, some of the QString
fields will often be the same for many entries in a row (for example,
the user name and the group). In this case, we can save memory by making
use of QString's implicit sharing feature for these strings.
Moreover, this commit adds a unit test that verifies that storing some
UDSEntries to a QDataStream and re-loading them works as expected.
REVIEW: 113591
KDE-PIM
IMAP: speed up the FETCH response parsing
Previously, the code would happily hit the LowLevelParser::parseList even on the
top-level level, which is rather expensive. Instead of that, this change parses
the individual data fields separately and takes into account the knowledge of
the expected data type. Furthermore, the order in which these fields are checked
against is changed so that FLAGS, UID and MODSEQ are checked first because these
are going to be the most widely encountered entities during mass-syncing, which
was traditionally the bottleneck.
A high-level measurement: the whole test suite takes 9.5 seconds instead of
11.5, i.e. this is a 17.5% speedup.
tree: Use tagged pointers to save memory
This change exploits the fact that the TreeItem structure has to be aligned,
typically to four or 8 bytes. This means that the m_parent cannot ever have the
couple of lowest bits set, so we can merge the m_fetchingState and m_parent into
a single member variable and save memory by that.
REVIEW: 114018
Do not use dynamic_cast in inner loops and other hot paths
There isn't much point in checking the correctness of our internal tree
representation all the time. Rough measurements indicate that one can get
another 1% speedup by switching to static_cast at these places.
REVIEW: 114014
Use QVector for TreeItem child management
This merges a series of commits which try to improve the speed efficiency of
child housekeeping for the in-memory tree which is maintained by the IMAP model.
This is deliberately not squashed into a single commit so that we can later take
a look at which data structure is actually the best one.
Both QVector and std::vector are close contenders; however, in our case QVector
appears to be *slightly* better -- an empty QVector only takes 8 bytes, while an
empty vector takes 24 bytes on my amd64 system. This is a useful optimization on
huge mailboxes as chances are that only a very small subset of messages will be
needed any given time.
std::vector offers slightly better performance, but I'll take the small memeory
saving in this context, I guess.
REVIEW: 114013
tree: only allocate memory for message metadata when actually needed
Previously, all messages in a mailbox would be allocated as soon as a mailbox
was opened. The data was not being loaded from the cache or fro mthe network,
but the memory was still being consumed. This patch move those data which are
not immediately needed into an auxiliary struct which is only allocated upon the
first request.
This cuts the memory usage of the testFlagReSyncBenchmark to 25 MB from 45 MB of
the old version.
What will be interesting to do is implementing periodical freeing of resources,
so that messages which are "not needed" anymore could be reclaimed. However,
that will require tracking the actual usage patterns of the individual items
which is rather hard to do -- the Qt MVC API unfortunately doesn't help here,
not even when using the persistent indexes.
v2: Release the full MessageDataPayload when freeing the per-message memory.
Thanks to Thomas Lübking for his suggestion, and shame on me for not doing this
in the first place. Train coding apparently didn't work this time.
REVIEW: 113912
Use QDirIterator for listing the maildir folders. This:
- avoids some extra stats
- avoids calling into Maildir::findRealKey that caches the keys and uses a lot of memory for no real reason (in this case)
REVIEW: 113918
Reimplement lock/alarm support
tree: Switch to QVector for the list of item children
Benchmarking the testFlagReSyncBenchmark on top of 10k messages with callgrind
suggests that there's roughly a 0.6% speedup here.
Merge branch 'parttable-optimization'
The 'name' column in PartTable has been removed and it's content is
now stored in PartTypeTable table. Instead PartTable has partTypeId
column that references respective records in PartTypeTable.
This positively improves performance of SQL queries on PartTable
(which is the largest table in Akonadi, >1 million records is not
uncommon), as the database does not have to perform string
comparision against the entire table in WHERE queries, but only does
numerical comparision during JOIN, and the strings are compared against
the PartTypeTable, which is much smaller (~15 rows).
By having numerical, rather than string index and by removing massive
string duplication, size of the PartTable file on disk is reduced by
up to 30%.
To apply this changes a migration of PartTable is necessary. The
migration happens only once - the first time Akonadi is started after
update. Since the migration involves copying /all/ records in PartTable
to another table and reconstructing an index on the entire table, the
migration can take up to 10 minutes (depending on size of the table).
During that time all Akonadi-enabled applications cannot be used and
will show a busy progressbar and a message that Akonadi is being
upgraded.
Internally this merge introduces so called 'complex updates'. Complex
updates are implemented in DbUpdated as a Q_SLOT called
complexUpdate_%targetVersion%() and allows more complicated logic to
be involved during the update. The classical way of updating DB schema
by placing queries into dbupdate.xml file is still supported.
Conflicts:
server/src/akonadi.cpp
server/src/handler/fetchhelper.cpp
server/src/storage/datastore.cpp
server/src/storage/dbinitializer.cpp
server/src/storage/dbupdate.xml
server/src/storage/dbupdater.cpp
server/src/storage/dbupdater.h
server/src/storage/itemretriever.cpp
Office
Optimize splitToRowAndColumn by not creating so many temporary qstrings
Clear the brush pyramid when selecting another brush
To save quite a bit of memory over the runtime of Krita.
Utilities
[patch 1/2] Improvements in KateBookmarks::insertBookmarks()
1.) Earlier code added one line number to sortArray in each iteration &
then sorted sortArray in each iteration.
Now, all the line numbers containing bookmarks are first added in
bookmarkLineArray & then sorted. Thus, the sorting algorithm is called
only once rather than calling it everytime a line with bookmark is
encountered.
2.) After all the bookmark line numbers are in bookmarkLineArray, just
iterate on that array. So, no loop is required to find out the index of
line number under consideration in the sorted array.
Removes a 'for' loop entirely which earlier ran for each iteration of
outer loop.
3.) Added some comments
REVIEW: 113974
Other
Educational
data: add Turkish keboard layout
Created during GCI 2013 by 'binaryking'.
KDE Base
[powerdevil] First port to KF5/Qt5
Plugins are the only thing left to be ported, the rest should be ok.
[kwin] NETWinInfo2 becomes NETWinInfo
And takes a xcb_connection_t instead of Display. Also our own class
is adjusted to no longer need the connection being passed in.
KDED modularization
Add dependencies.
List in superbuild.
Don't look for DBus twice.
Re-enable documentation generation.
Reviewed by Alex Fiestas (who did kded splitting)
initial quick and dirty ktexteditor compilation on KF5
KDE-PIM
Remove non-functional ODBC/Virtuoso backend support.
REVIEW: 113977
Remove Strigi support.
As discussed during the KDE PIM sprint.
REVIEW: 113921
User Interface
Remove KDE4Support dependency from plasma-frameworks (almost)
Stop using classes from kde4support:
- KComponentData is deprecated, it will be using QCoreApplication::
applicationName() and QCoreApplication::applicationVersion(). Of course,
this means that the existing shells will have to be ported. I have no
problem with doing that port myself, if I'm told where to look into.
- Drop usage of KLocale, ported to QLocale
- Drop usage of KStandardDirs, ported to QStandardPaths
- Drop usage of KIcon, ported to QIcon
Furthermore, there's a module in src/declarativeimports/locale that IIUC
exposes KLocale bindings to QML. A specific plan to port it should happen
as well.
REVIEW: 113920