<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6144115306124694421</id><updated>2011-09-21T10:47:40.514+03:00</updated><category term='Plasma'/><category term='KDE'/><category term='KWin'/><category term='GSoC'/><category term='aKademy'/><category term='OpenGL'/><title type='text'>Rivo's blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://rivolaks.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6144115306124694421/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://rivolaks.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Rivo Laks</name><uri>http://www.blogger.com/profile/06873873820115729073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>14</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6144115306124694421.post-5717004547778597106</id><published>2008-07-24T21:28:00.001+03:00</published><updated>2008-07-24T21:29:11.423+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenGL'/><title type='text'>How to easily mix QWidgets and OpenGL</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_3ONM3XBfS0M/SIi9fan9PvI/AAAAAAAAAB8/NMauWNK_28U/s1600-h/widgets-1.jpeg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp0.blogger.com/_3ONM3XBfS0M/SIi9fan9PvI/AAAAAAAAAB8/NMauWNK_28U/s200/widgets-1.jpeg" alt="" id="BLOGGER_PHOTO_ID_5226635714983968498" border="0" /&gt;&lt;/a&gt;Around a month ago there was &lt;a href="http://labs.trolltech.com/blogs/2008/06/27/accelerate-your-widgets-with-opengl/"&gt;a post at Trolltech Labs Blogs&lt;/a&gt; about embedding widgets in QGLWidget. I had been wanting to do something like that for &lt;a href="http://freehackers.org/%7Erivo/kgllib/html/"&gt;KGLLib&lt;/a&gt;, so I downloaded the demo and took a look. It worked fine, but the code didn't exactly fit my purposes.&lt;br /&gt;The demo did all the OpenGL rendering in the QGraphicsScene subclass. Usually it is done in QGLWidget subclass and I wanted a solution which would be as transparent as possible. Thus the rendering had to stay in GLWidget.&lt;br /&gt;The second problem was the events. The event handling could have been done in QGraphicsView or QGraphicsScene subclass. But if I already have a GLWidget using event handlers, I'd prefer them to continue working as before. So some kind of smart event forwarding was needed to send the events either to the gl widget or to the graphicsview, depending on whether any of the QGV widgets had focus.&lt;br /&gt;&lt;br /&gt;I have now solved both problems and the result is a class called WidgetProxy. It takes a GLWidget as an argument and creates a QGraphicsView object, using the GL widget as viewport. The OpenGL rendering is done in your GLWidget as usual and QWidgets can be drawn onto the OpenGL scene. It also tries to do the right thing concerning events: mouse events are sent to whatever is behind the cursor (QGV widget if there is one behind the cursor, otherwise to the GL widget). Keyboard events are sent to whatever has the focus.&lt;br /&gt;&lt;br /&gt;It's really easy to use: if you have a toplevel QGLWidget and want to add widgets into it, all you have to do is first create the WidgetProxy object:&lt;br /&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;    &lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;WidgetProxy* proxy = new WidgetProxy(myGLWidget);&lt;/span&gt;&lt;/blockquote&gt; and then add some widgets:&lt;span style="font-style: italic;font-family:courier new;" &gt;    &lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;QWidget* embeddedWindow = proxy-&gt;createWindow("Window title");&lt;/span&gt; &lt;span style="font-style: italic;font-family:courier new;" &gt;embeddedWindow-&gt;layout()-&gt;addWidget(new QLabel("This is an embedded widget!", embeddedWindow));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;embeddedWindow-&gt;move(10, 10);&lt;/span&gt; &lt;span style="font-style: italic;font-family:courier new;" &gt;proxy-&gt;addWidget(embeddedWindow);&lt;/span&gt;&lt;/blockquote&gt;If the GLWidget is not toplevel but in a layout then the only difference is that you have to add the proxy, not the GLWidget, into the layout.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_3ONM3XBfS0M/SIi-OI-1BkI/AAAAAAAAACE/af9z7e3CQ1M/s1600-h/widgets-3.jpeg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp3.blogger.com/_3ONM3XBfS0M/SIi-OI-1BkI/AAAAAAAAACE/af9z7e3CQ1M/s200/widgets-3.jpeg" alt="" id="BLOGGER_PHOTO_ID_5226636517701912130" border="0" /&gt;&lt;/a&gt;You can even show() or hide() the GLWidget and it works as before since the WidgetProxy intercepts those events, showing or hiding the QGraphicsView instead.&lt;br /&gt;The aim is to make it possible to have widgets in OpenGL with pretty much a single line of code - often the user of the GL widget doesn't even need to know about it.&lt;br /&gt;&lt;br /&gt;The code is now part of my KGLLib, along with an example ("widgets"). KGLLib's code can be found in KDE's SVN, in &lt;a href="http://websvn.kde.org/trunk/playground/libs/kgllib/"&gt;trunk/playground/libs/kgllib/&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6144115306124694421-5717004547778597106?l=rivolaks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rivolaks.blogspot.com/feeds/5717004547778597106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6144115306124694421&amp;postID=5717004547778597106' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6144115306124694421/posts/default/5717004547778597106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6144115306124694421/posts/default/5717004547778597106'/><link rel='alternate' type='text/html' href='http://rivolaks.blogspot.com/2008/07/how-to-easily-mix-qwidgets-and-opengl.html' title='How to easily mix QWidgets and OpenGL'/><author><name>Rivo Laks</name><uri>http://www.blogger.com/profile/06873873820115729073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_3ONM3XBfS0M/SIi9fan9PvI/AAAAAAAAAB8/NMauWNK_28U/s72-c/widgets-1.jpeg' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6144115306124694421.post-7217115876654071513</id><published>2008-01-02T23:23:00.000+02:00</published><updated>2008-01-02T23:23:13.418+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><category scheme='http://www.blogger.com/atom/ns#' term='KWin'/><title type='text'>New year, KWin and other stuff</title><content type='html'>First let me wish you all happy new year :-)&lt;br /&gt;2008 is certainly going to be an interesting year for KDE with the next major version finally being released and the focus shifting from refactoring to polishing and using the new APIs. I can't wait to see what people will come up with by the time KDE 4.1 or even 4.2 gets out.&lt;br /&gt;&lt;br /&gt;KWin's compositing has seen many improvements in the last months, but we're still not completely sure if we want to enable it by default (even only for the selected cards and drivers). If we enable compositing and it unexpectedly fails for someone then there's the chance of him/her not getting a usable desktop at all and we're not sure if we want to risk with that...&lt;br /&gt;Should we disable it for everyone by default (it's not difficult to enable anyway) and wait until we implement some safeguards for 4.1? Or should we enable it because it works for most people for whom it's enabled by default and end-users are less likely to adopt 4.0 anyway? What do you think?&lt;br /&gt;&lt;br /&gt;I've also got a few more interesting things coming up, but I'll keep those for the next time ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6144115306124694421-7217115876654071513?l=rivolaks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rivolaks.blogspot.com/feeds/7217115876654071513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6144115306124694421&amp;postID=7217115876654071513' title='28 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6144115306124694421/posts/default/7217115876654071513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6144115306124694421/posts/default/7217115876654071513'/><link rel='alternate' type='text/html' href='http://rivolaks.blogspot.com/2008/01/new-year-kwin-and-other-stuff.html' title='New year, KWin and other stuff'/><author><name>Rivo Laks</name><uri>http://www.blogger.com/profile/06873873820115729073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>28</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6144115306124694421.post-1061420698675117208</id><published>2007-09-22T18:46:00.000+03:00</published><updated>2007-09-22T18:48:34.421+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><category scheme='http://www.blogger.com/atom/ns#' term='KWin'/><title type='text'>KWin improvements</title><content type='html'>I first wanted to blog about KWin changes after returning from aKademy but then I never got to doing it. After that I've thought something like "once I'll complete this feature, I'll blog" a few times but then another interesting thing came up...&lt;br /&gt;But finally, here's a summary of cool stuff that has happened in recent months:&lt;br /&gt;&lt;br /&gt;One of the most interesting things is compositing settings autodetection. KWin now tries to detect your video driver and it's version and if it's good enough then compositing will be enabled by default. ATM it'll be enabled for NVidia drivers &gt;= 96.39 and for Intel &gt;= 20061017. If you know which settings work for another card/driver then please report it to kwin mailing list or post a comment here.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3ONM3XBfS0M/RvUSaNKJxlI/AAAAAAAAABU/c8zvo_cyIkU/s1600-h/kwin-confirm.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://1.bp.blogspot.com/_3ONM3XBfS0M/RvUSaNKJxlI/AAAAAAAAABU/c8zvo_cyIkU/s200/kwin-confirm.png" alt="" id="BLOGGER_PHOTO_ID_5113013193367209554" border="0" /&gt;&lt;/a&gt;When you enable compositing yourself or change some of its settings, you'll get a confirmation dialog which will revert back to previous, hopefully working settings if you won't respond in 10 seconds (it's similar to the one you get when changing resolution. In fact there's plan to use exactly the same dialog). ATM it's a bit unreliable in that KWin sometimes crashes when reloading it's settings but hopefully it'll be fixed soon.&lt;br /&gt;&lt;br /&gt;Speaking of KWin crashes, we're planning to make KWin restart itself in such cases (just like Plasma or KRunner) and eventually turn off compositing so that you'd &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3ONM3XBfS0M/RvUU5tKJxmI/AAAAAAAAABc/wXK_1mDwurE/s1600-h/kwin-compositingconfig.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://3.bp.blogspot.com/_3ONM3XBfS0M/RvUU5tKJxmI/AAAAAAAAABc/wXK_1mDwurE/s200/kwin-compositingconfig.png" alt="" id="BLOGGER_PHOTO_ID_5113015933556344418" border="0" /&gt;&lt;/a&gt;always have a usable window manager, even when compositing has some problems.&lt;br /&gt;&lt;br /&gt;Then there's the not-so-new-anymore compositing config module where you can turn on compositing and effects. Since a few days ago it also includes the entire list of effects so there's no separate "Window effects" config module for that anymore.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3ONM3XBfS0M/RvUVldKJxnI/AAAAAAAAABk/9ORJiXIOq5Q/s1600-h/kwin-presentwindowsconfig.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://2.bp.blogspot.com/_3ONM3XBfS0M/RvUVldKJxnI/AAAAAAAAABk/9ORJiXIOq5Q/s200/kwin-presentwindowsconfig.png" alt="" id="BLOGGER_PHOTO_ID_5113016685175621234" border="0" /&gt;&lt;/a&gt;One of the biggest usability complaints - effect shortcuts aren't listed anywhere - is also starting to get solved. I added shortcuts to PresentWindows config module. I'm still not sure if all effects should have a config module just to show the shortcuts or if it would be better to just list the shortcut in effect's description (e.g. "Shows all desktops side by side when Ctrl+F8 is pressed"... or just "Shows all desktops side by side (Ctrl+F8)"). We've still got a little time to figure it out.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3ONM3XBfS0M/RvUcR9KJxoI/AAAAAAAAABs/56XQ5h__9Fg/s1600-h/kwin-invert.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://4.bp.blogspot.com/_3ONM3XBfS0M/RvUcR9KJxoI/AAAAAAAAABs/56XQ5h__9Fg/s200/kwin-invert.png" alt="" id="BLOGGER_PHOTO_ID_5113024046749566594" border="0" /&gt;&lt;/a&gt;There are a few new effects as well. Invert and Sharpen effects were added during aKademy and Looking Glass - a fancier-looking magnifier - a little after it.&lt;br /&gt;&lt;br /&gt;Old effects have received some polishing. PresentWindows and BoxSwitch both show window captions and icons. Shadows are nice and round (and unfortunately a bit slow). Some animations are faster, making KWin feel snappier.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3ONM3XBfS0M/RvUdP9KJxpI/AAAAAAAAAB0/ZnaJGqZohAA/s1600-h/kwin-lookingglass.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://4.bp.blogspot.com/_3ONM3XBfS0M/RvUdP9KJxpI/AAAAAAAAAB0/ZnaJGqZohAA/s200/kwin-lookingglass.png" alt="" id="BLOGGER_PHOTO_ID_5113025111901456018" border="0" /&gt;&lt;/a&gt;I'm not posting any videos this time but if all goes well, you should see one in beta3's announcement.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6144115306124694421-1061420698675117208?l=rivolaks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rivolaks.blogspot.com/feeds/1061420698675117208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6144115306124694421&amp;postID=1061420698675117208' title='27 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6144115306124694421/posts/default/1061420698675117208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6144115306124694421/posts/default/1061420698675117208'/><link rel='alternate' type='text/html' href='http://rivolaks.blogspot.com/2007/09/kwin-improvements.html' title='KWin improvements'/><author><name>Rivo Laks</name><uri>http://www.blogger.com/profile/06873873820115729073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_3ONM3XBfS0M/RvUSaNKJxlI/AAAAAAAAABU/c8zvo_cyIkU/s72-c/kwin-confirm.png' height='72' width='72'/><thr:total>27</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6144115306124694421.post-6057722007430803456</id><published>2007-09-02T15:20:00.000+03:00</published><updated>2007-09-02T15:20:17.227+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><category scheme='http://www.blogger.com/atom/ns#' term='GSoC'/><title type='text'>Iconcache benchmarking results</title><content type='html'>In the last three days I've been fixing some last bugs in KPixmapCache, benchmarking it and analyzing the results. Here they are.&lt;br /&gt;&lt;br /&gt;It's going to be a long post, so the short story is: the cache reduces KDE startup time by about 1 second (~ 9%), depending on how many and which applications are autostarted. Startup time of individual applications is somewhat reduced as well, but the exact numbers depend on the application (more specifically, on how many icons they use).&lt;br /&gt;&lt;br /&gt;I benchmarked KDE startup on two computers: my desktop and laptop.&lt;br /&gt;Desktop is custom built with AMD Athlon 2800+, 1Gb memory and SATA hard drive.&lt;br /&gt;Laptop is Dell Inspiron 6400, with Intel Core Duo T2350 with 2Gb of memory.&lt;br /&gt;Operating system on both computers is Kubuntu Feisty, with all updates.&lt;br /&gt;KDE was pretty much 4.0 beta2, I updated SVN at 29/08 about 1400 UTC.&lt;br /&gt;I used a bit customized Bootchart and kpc-stats patch for benchmarking.&lt;br /&gt;&lt;br /&gt;For numerical data I used two things: first, CPU time which is amount of time that system was not idle, gotten from /proc/uptime.&lt;br /&gt;Second, startup time reported by kpc-stats which is time elapsed from when the first KPixmapCache object is created (by kded4 at the very beginning of the KDE session) until when the last icon is found or inserted to the cache (at which point all applications should be started). This can be thought of as a perceived startup time, it shows how long it takes until KDE is ready for use.&lt;br /&gt;I tested with both default KDE startup (referred to as bare KDE) which starts only Plasma, Kicker, KWin, KTip (and background programs) as well as "full KDE" which also starts Konqueror, KBounce, KMPlot and Dolphin and is meant to simulate full KDE session where many programs are started and/or restored.&lt;br /&gt;Every case was ran 3 or 4 times and average time was used. Disk caches were dropped before each run.&lt;br /&gt;&lt;br /&gt;The numbers:&lt;br /&gt;CPU time: Bare KDE on desktop computer: 9985 vs 8933 ms, win is 1052 ms or 11,8%. On laptop 6717 vs 6088 ms, win is 630 ms / 10,3%.&lt;br /&gt;Full KDE: desktop - 20636 vs 19525 ms, win is 1111 ms / 5,7%. On laptop - 9722 vs 8968 ms, win: 755 ms / 8,4%.&lt;br /&gt;Startup time: Bare KDE on desktop - 13810 vs 12572 ms, win is 1237 ms / 9,8%. On laptop - 9889 vs 9075 ms, win: 814 ms / 9,0%.&lt;br /&gt;Full KDE: desktop - 24905 vs 23690 ms, win: 1215 ms / 5,1%. Laptop - 13138 vs 11965 ms, win: 1174 ms / 9,8%.&lt;br /&gt;&lt;br /&gt;Some bootchart images:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3ONM3XBfS0M/Rtqjy65UaSI/AAAAAAAAAAs/5vPxbk6yFFc/s1600-h/desktop.kde-cold-noic-20070831-174440.png"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_3ONM3XBfS0M/Rtqjy65UaSI/AAAAAAAAAAs/5vPxbk6yFFc/s200/desktop.kde-cold-noic-20070831-174440.png" alt="" id="BLOGGER_PHOTO_ID_5105573222776334626" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3ONM3XBfS0M/RtqkC65UaTI/AAAAAAAAAA0/DtzwodE13Rw/s1600-h/desktop.kde-cold-ic-20070831-175607.png"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_3ONM3XBfS0M/RtqkC65UaTI/AAAAAAAAAA0/DtzwodE13Rw/s200/desktop.kde-cold-ic-20070831-175607.png" alt="" id="BLOGGER_PHOTO_ID_5105573497654241586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Bare KDE startup on desktop, without (left) and with (right) iconcache.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3ONM3XBfS0M/Rtqk4q5UaUI/AAAAAAAAAA8/f3dS6nl8inQ/s1600-h/laptop.kdesession-cold-noic-20070831-215525.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_3ONM3XBfS0M/Rtqk4q5UaUI/AAAAAAAAAA8/f3dS6nl8inQ/s200/laptop.kdesession-cold-noic-20070831-215525.png" alt="" id="BLOGGER_PHOTO_ID_5105574421072210242" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3ONM3XBfS0M/RtqlAa5UaVI/AAAAAAAAABE/Ep4oaFTmcIE/s1600-h/laptop.kdesession-cold-ic-20070831-212301.png"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_3ONM3XBfS0M/RtqlAa5UaVI/AAAAAAAAABE/Ep4oaFTmcIE/s200/laptop.kdesession-cold-ic-20070831-212301.png" alt="" id="BLOGGER_PHOTO_ID_5105574554216196434" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Full KDE startup on laptop, without and with iconcache.&lt;br /&gt;&lt;br /&gt;You can see from the numbers that the icon cache gives almost 10% improvement. Another interesting observation is that improvement in full KDE session isn't much bigger than in bare KDE. On desktop the improvement is pretty much the same, only in laptop is it a bit bigger with full session. Possible reason is that laptop's CPU is faster and thus I/O becomes bigger bottleneck, especially as it's HDD is also slower (5400 vs 7200 rpm).&lt;br /&gt;Most of the 1-second improvement probably comes from the fact that icon theme initialization, which scans all icon dirs, can be skipped when icon cache is present because needed info is already stored in the iconcache header.&lt;br /&gt;You can visually see the improvement when flipping between bootchart image pairs. On with-iconcache images, the later part of the graph has shifted about 1-1.5 seconds forward. You can also see there that the 1-second improvement comes from kded process which is where the expensive icontheme initialization takes place.&lt;br /&gt;&lt;br /&gt;I didn't benchmark the applications again since &lt;a href="http://rivolaks.blogspot.com/2007/08/iconcache-status.html"&gt;I have already done so earlier&lt;/a&gt; (and the numbers shouldn't be really different) and because it was more painful to do than benchmarking full KDE.&lt;br /&gt;Only exception was Dolphin which was the first app I tried to benchmark (after that one I didn't bother with the rest) and which showed a 400ms (11.4 vs 11.0 sec) improvement in cpu time and 1.5 sec (12.6 vs 11.1 sec) improvement in startup time. This fits with my &lt;a href="http://rivolaks.blogspot.com/2007/08/iconcache-status.html"&gt;earlier benchmarks&lt;/a&gt; quite well. Also note that the earlier benchmarks were all done on the laptop while this one was done on desktop, that's why the absolute times are so different.&lt;br /&gt;&lt;br /&gt;Last but not least, keep in mind that absolute performance improvements aren't the only advantage the icon cache brings. It also makes some things possible which would have been way too slow without it. Also there's the generic &lt;a href="http://techbase.kde.org/Development/Tutorials/KPixmapCache"&gt;pixmap cache&lt;/a&gt; which is already being used in quite a few games to speed up rendering of game elements and background from SVGs.&lt;br /&gt;&lt;br /&gt;And finally, since this is quite likely my last GSoC-related post, I'd like to thank my mentors and the whole KDE community for helping and supporting me as well as Google for organizing the SoC and supporting open-source development.&lt;br /&gt;Keep up the great work everyone! :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6144115306124694421-6057722007430803456?l=rivolaks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rivolaks.blogspot.com/feeds/6057722007430803456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6144115306124694421&amp;postID=6057722007430803456' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6144115306124694421/posts/default/6057722007430803456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6144115306124694421/posts/default/6057722007430803456'/><link rel='alternate' type='text/html' href='http://rivolaks.blogspot.com/2007/09/iconcache-benchmarking-results.html' title='Iconcache benchmarking results'/><author><name>Rivo Laks</name><uri>http://www.blogger.com/profile/06873873820115729073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_3ONM3XBfS0M/Rtqjy65UaSI/AAAAAAAAAAs/5vPxbk6yFFc/s72-c/desktop.kde-cold-noic-20070831-174440.png' height='72' width='72'/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6144115306124694421.post-7414500733174871285</id><published>2007-08-28T20:47:00.000+03:00</published><updated>2007-08-28T20:47:45.593+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenGL'/><title type='text'>KDE OpenGL library?</title><content type='html'>Lately I've gotten the feeling that OpenGL is really going mainstream, including in KDE. We already have quite a few apps that are using it and it looks like more are coming.&lt;br /&gt;However ATM many of those apps are reinventing the wheel by writing same generic code such as a texture class over and over again.&lt;br /&gt;&lt;br /&gt;So I got the idea of creating some kind of KDE OpenGL library. It would have Qt-style API that KDE developers would be familiar with and would provide some common building blocks that would ease development of OpenGL apps. Right now I'm thinking texture and shader classes, maybe a camera class, some common functions, vector library (&lt;a href="http://eigen.tuxfamily.org/"&gt;Eigen&lt;/a&gt; should be great for that) and perhaps an extension library (&lt;a href="http://glew.sourceforge.net/"&gt;GLEW&lt;/a&gt; could be used). I don't want too many things though, it should still stay lightweight instead of becoming yet another fully featured 3d engine.&lt;br /&gt;And it should be extensible. If your app needs e.g. cubemap textures, you should be able to write a CubemapTexture class that inherits from Texture class and provides necessary functionality. Such extensions could even be put into a common place so that other apps could copy them into their own source tree and use them without bloating the library.&lt;br /&gt;The library probably needn't depend on KDE itself, just on Qt. This might make it interesting for pure Qt apps as well.&lt;br /&gt;&lt;br /&gt;What do you think of that idea? Would you use such a library? Or know someone/something that might? Add your comments here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6144115306124694421-7414500733174871285?l=rivolaks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rivolaks.blogspot.com/feeds/7414500733174871285/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6144115306124694421&amp;postID=7414500733174871285' title='17 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6144115306124694421/posts/default/7414500733174871285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6144115306124694421/posts/default/7414500733174871285'/><link rel='alternate' type='text/html' href='http://rivolaks.blogspot.com/2007/08/kde-opengl-library.html' title='KDE OpenGL library?'/><author><name>Rivo Laks</name><uri>http://www.blogger.com/profile/06873873820115729073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6144115306124694421.post-5458569177835170136</id><published>2007-08-22T19:15:00.000+03:00</published><updated>2007-08-22T19:15:53.993+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><category scheme='http://www.blogger.com/atom/ns#' term='GSoC'/><title type='text'>Iconcache is Done :-)</title><content type='html'>The coding phase of the Summer of Code is now over (for two days already).&lt;br /&gt;Within the last days I managed to add mmap-implementation which instead of opening/reading/closing cache files all the time maps them into shared memory and then just uses that memory. It seems to increase performance (of reading icons from the cache) by about 30%. More than I anticipated.&lt;br /&gt;&lt;br /&gt;In the end I managed to get in all the features and ideas that I had, so the work on the icon/pixmap cache can be considered complete now. There might of course be some smaller performance tweaking and bugfixing and apidocs additions and so on, but I don't expect to do any bigger changes.&lt;br /&gt;It also means that if you see a bug concerning icon loading or pixmap cache (I hope you won't ;-) then report it. Either contact me directly or add a comment here or whatever.&lt;br /&gt;&lt;br /&gt;I still haven't gotten to doing the final benchmarking... maybe at the end of this week or in the next one...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6144115306124694421-5458569177835170136?l=rivolaks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rivolaks.blogspot.com/feeds/5458569177835170136/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6144115306124694421&amp;postID=5458569177835170136' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6144115306124694421/posts/default/5458569177835170136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6144115306124694421/posts/default/5458569177835170136'/><link rel='alternate' type='text/html' href='http://rivolaks.blogspot.com/2007/08/iconcache-is-done.html' title='Iconcache is Done :-)'/><author><name>Rivo Laks</name><uri>http://www.blogger.com/profile/06873873820115729073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6144115306124694421.post-7969817107948810771</id><published>2007-08-17T19:15:00.000+03:00</published><updated>2007-08-17T19:16:13.711+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><category scheme='http://www.blogger.com/atom/ns#' term='GSoC'/><title type='text'>Iconcache status</title><content type='html'>Summer of Code is ending (the official deadline for writing code is 20th August) and so my work on the icon cache is also coming to an end.&lt;br /&gt;&lt;br /&gt;Yesterday I committed the last crucial piece of code. The cache now periodically checks for icon theme updates, so as soon as you install some new icons, they should be used and the obsolete cache be discarded.&lt;br /&gt;This means that the cache is now &lt;a href="http://www.freedesktop.org/"&gt;fd.o&lt;/a&gt; &lt;a href="http://www.freedesktop.org/wiki/Specifications/icon-theme-spec"&gt;icontheme spec&lt;/a&gt;-compliant and all the necessary features should be implemented :-)&lt;br /&gt;&lt;br /&gt;Some smaller things remain to be done, such as further performance improvements and final benchmarking. I hope to complete the code part in the coming days and most of benchmarking will probably be done after the 20th.&lt;br /&gt;&lt;br /&gt;Speaking of benchmarks, I did some a few days ago. As you &lt;a href="http://commit-digest.org/issues/2007-07-22/"&gt;have probably heard&lt;/a&gt; already, perhaps the most extreme case is kfind which starts up in about 4 secs without the cache and in a bit less than 1 sec (of which just 300ms is icon loading) with the cache. That's with hot caches (i.e. operating system has cached some of the data already). With cold caches it's 12secs vs 2.5secs.&lt;br /&gt;Dolphin uses quite a few icons as well. With cold caches it takes 3.9 secs with iconcache and 5.2 secs without it to start. With hot caches it's 1.2 vs 1.5 secs.&lt;br /&gt;&lt;br /&gt;I also noticed about one second improvement (12 vs 13 secs) in full KDE session startup time (with Dolphin, Konqueror, Konsole and KBounce autostarted). I have to admit it's a bit less than I had hoped for, but KDE's startup time will probably be improved prior to 4.0 anyway. Anyway I will make further benchmarks to find out more accurate numbers.&lt;br /&gt;&lt;br /&gt;The times are measured from when KPixmapCache contructor is called (which should be at most 100ms after the program is started) until the last find() call (after which the application should be ready to be used).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6144115306124694421-7969817107948810771?l=rivolaks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rivolaks.blogspot.com/feeds/7969817107948810771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6144115306124694421&amp;postID=7969817107948810771' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6144115306124694421/posts/default/7969817107948810771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6144115306124694421/posts/default/7969817107948810771'/><link rel='alternate' type='text/html' href='http://rivolaks.blogspot.com/2007/08/iconcache-status.html' title='Iconcache status'/><author><name>Rivo Laks</name><uri>http://www.blogger.com/profile/06873873820115729073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6144115306124694421.post-3206652760263792916</id><published>2007-07-20T14:05:00.000+03:00</published><updated>2007-07-20T14:05:31.994+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><category scheme='http://www.blogger.com/atom/ns#' term='GSoC'/><title type='text'>Icon/pixmap cache now in kdelibs</title><content type='html'>As the title says, I've finally merged my Summer of Code project - icon and pixmap cache - into kdelibs.&lt;br /&gt;&lt;br /&gt;Buildsystem changes are not done yet, I'll do them in the next days. Until then, you might see old icons after new ones are installed. If you really need the new ones, do &lt;span style="font-style: italic;"&gt;touch -m $KDEDIR/share/icons/hicolor/&lt;/span&gt;. Then the cache will notice the new icons.&lt;br /&gt;&lt;br /&gt;The pixmap cache is meant to make disk caching of e.g. pixmaps rendered from SVGs very easy for app developers. It's &lt;a href="http://api.kde.org/4.0-api/kdelibs-apidocs/kdeui/html/classKPixmapCache.html"&gt;API&lt;/a&gt; is similar to that of the &lt;a href="http://doc.trolltech.com/4.3/qpixmapcache.html"&gt;QPixmapCache&lt;/a&gt; and I'm planning to create a &lt;a href="http://techbase.kde.org/Development/Tutorials/KPixmapCache"&gt;TechBase tutorial&lt;/a&gt; soon to make it's adoption even easier.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6144115306124694421-3206652760263792916?l=rivolaks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rivolaks.blogspot.com/feeds/3206652760263792916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6144115306124694421&amp;postID=3206652760263792916' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6144115306124694421/posts/default/3206652760263792916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6144115306124694421/posts/default/3206652760263792916'/><link rel='alternate' type='text/html' href='http://rivolaks.blogspot.com/2007/07/iconpixmap-cache-now-in-kdelibs.html' title='Icon/pixmap cache now in kdelibs'/><author><name>Rivo Laks</name><uri>http://www.blogger.com/profile/06873873820115729073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6144115306124694421.post-7034131338395740766</id><published>2007-07-18T15:34:00.000+03:00</published><updated>2007-07-18T15:35:10.296+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><category scheme='http://www.blogger.com/atom/ns#' term='Plasma'/><title type='text'>My first plasmoid</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3ONM3XBfS0M/Rp4GclcIg5I/AAAAAAAAAAc/M5L93a-UvEY/s1600-h/plasma-bluemarble3.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 150px; height: 146px;" src="http://3.bp.blogspot.com/_3ONM3XBfS0M/Rp4GclcIg5I/AAAAAAAAAAc/M5L93a-UvEY/s320/plasma-bluemarble3.png" alt="" id="BLOGGER_PHOTO_ID_5088511717131453330" border="0" /&gt;&lt;/a&gt;Now that Zack has made it possible to create &lt;a href="http://zrusin.blogspot.com/2007/07/revelations.html"&gt;3D plasmoids&lt;/a&gt; I had to try writing one myself, too.&lt;br /&gt;&lt;br /&gt;It renders a virtual Earth model on your desktop, with subtle rotate animation and a day/night cycle, using NASA's &lt;a href="http://visibleearth.nasa.gov/view_set.php?categoryID=2363"&gt;Blue Marble&lt;/a&gt; imagery. And it has a rather crappy atmosphere as well.&lt;br /&gt;It requires a shader-capable videocard to work, so minimum requirements are GeForce FX or Radeon 9500 although you'll&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3ONM3XBfS0M/Rp4GclcIg4I/AAAAAAAAAAU/cW25GILb8Rc/s1600-h/plasma-bluemarble2.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 150px; height: 144px;" src="http://3.bp.blogspot.com/_3ONM3XBfS0M/Rp4GclcIg4I/AAAAAAAAAAU/cW25GILb8Rc/s320/plasma-bluemarble2.png" alt="" id="BLOGGER_PHOTO_ID_5088511717131453314" border="0" /&gt;&lt;/a&gt; want to use a bit better card than those for any smoothness.&lt;br /&gt;&lt;br /&gt;It doesn't have any useful functionality, but if you just want to waste your processing power, then it does a pretty good job ;-)&lt;br /&gt;&lt;br /&gt;The code can be found in KDE's SVN in playground/base/plasma/applets/bluemarble/.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6144115306124694421-7034131338395740766?l=rivolaks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rivolaks.blogspot.com/feeds/7034131338395740766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6144115306124694421&amp;postID=7034131338395740766' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6144115306124694421/posts/default/7034131338395740766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6144115306124694421/posts/default/7034131338395740766'/><link rel='alternate' type='text/html' href='http://rivolaks.blogspot.com/2007/07/my-first-plasmoid.html' title='My first plasmoid'/><author><name>Rivo Laks</name><uri>http://www.blogger.com/profile/06873873820115729073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_3ONM3XBfS0M/Rp4GclcIg5I/AAAAAAAAAAc/M5L93a-UvEY/s72-c/plasma-bluemarble3.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6144115306124694421.post-1418688796348015621</id><published>2007-07-11T16:41:00.000+03:00</published><updated>2007-07-11T16:42:39.000+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><category scheme='http://www.blogger.com/atom/ns#' term='aKademy'/><category scheme='http://www.blogger.com/atom/ns#' term='GSoC'/><title type='text'>aKademy impressions</title><content type='html'>I'm one of the many KDE people who spent the last week in Glasgow, at aKademy 2007. It was a really great event and the first chance for me to meet many KDE people in real life.&lt;br /&gt;&lt;br /&gt;The arrival went quite smoothly. I arrived late Sunday, a day after the incident at the Glasgow International. Luckily there weren't any problems there, although one could see higher security measures such as concrete blocks before the main entrance and a group of police with SMGs.&lt;br /&gt;&lt;br /&gt;The problems started once I reached my hostel. I was supposed to be in a room with three other SoC students. But as it turned out, there were four others instead of three so my bed was already taken. After some searching they put me in another room. In the morning I was told I'd stay in that room until my departure, but to my surprise all my things had been removed when I went back in the evening. After talking to the staff again, they gave me yet another room. And after staying in two different rooms for two nights, they finally told me I should go and talk to the organizing team as they really don't have a place for me. So I went and talked to Kenny Duffus who put me into the university accommodation which was much more convenient and more importantly absolutely problem free. Big thank you to Kenny Duffus and the rest of the aKademy team for sorting that out (not to mention organizing this great event) :-)&lt;br /&gt;&lt;br /&gt;Other than the hostel issue, everything was great. I met many KDE people, including my mentors Seli and aseigo whom I brought some chocolate for their good work (and almost made aseigo cry in the process ;-)). We also had a nice barbeque out of the city on Thursday although the end of it was somewhat ruined by the rain (yeah, it rained quite a bit in Scotland).&lt;br /&gt;&lt;br /&gt;Tons of work also got done. There was a heap of additions to KWin which probably deserve their own blog post. Also, there were some very important additions to my icon cache. It got split into two classes: KIconCache, which is the KDE-wide icon cache, and KPixmapCache which provides application-specific cache functionality. This way e.g. applications that use SVGs so that they can cache the generated pixmaps without having to regenerate them every startup. The code is available from KDE SVN, under /branches/soc-iconcache/. It contains kdeui replacement (which I'm trying to keep mostly up-to-date with the trunk), a demo app showing how to use the app-specific caches as well as an old visualization app which was meant to list all entires in the icon cache but doesn't work anymore due to file format changes and me being too lazy to update it...&lt;br /&gt;I've still got some hope to get this into 4.0 as there certainly would be apps in kdeedu and kdegames that would make use of it. And probably Plasma as well. We should know for sure in a week or two.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6144115306124694421-1418688796348015621?l=rivolaks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rivolaks.blogspot.com/feeds/1418688796348015621/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6144115306124694421&amp;postID=1418688796348015621' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6144115306124694421/posts/default/1418688796348015621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6144115306124694421/posts/default/1418688796348015621'/><link rel='alternate' type='text/html' href='http://rivolaks.blogspot.com/2007/07/akademy-impressions.html' title='aKademy impressions'/><author><name>Rivo Laks</name><uri>http://www.blogger.com/profile/06873873820115729073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6144115306124694421.post-5190360242876727687</id><published>2007-06-15T20:06:00.000+03:00</published><updated>2007-06-15T20:07:40.691+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><category scheme='http://www.blogger.com/atom/ns#' term='KWin'/><title type='text'>KWin performance and shadows</title><content type='html'>After publishing my last KWin video, the biggest critique was that KWin is slow. Most of that could be attributed to the video recording which naturally makes things slower, but e.g. Beryl still felt smoother than KWin. I decided to investigate it and one thing I found out was that TFP (texture from pixmap) mode was actually slower than SHM (shared memory) mode. A lot slower even, especially when just part of a window changed. I still haven't figured out why exactly it happens (I'm using NVidia drivers, don't know if that's related) or if it's same with Compiz/Beryl, but if you want to switch to SHM mode, this command does that:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;kwriteconfig --file kwinrc --group Translucency --key GLMode SHM&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After executing that you can restart kwin by executing  &lt;span style="font-style: italic;"&gt;kwin --replace&lt;/span&gt;&lt;br /&gt;Additionally, turning off vsync might also make it feel a bit better, but be warned that you might experience some tearing in this case:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;kwriteconfig --file kwinrc --group Translucency --key GLVSync false&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3ONM3XBfS0M/RnLC3xDe64I/AAAAAAAAAAM/a11TFYDMRNI/s1600-h/kwin-softshadows.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://2.bp.blogspot.com/_3ONM3XBfS0M/RnLC3xDe64I/AAAAAAAAAAM/a11TFYDMRNI/s320/kwin-softshadows.jpg" alt="" id="BLOGGER_PHOTO_ID_5076333993316510594" border="0" /&gt;&lt;/a&gt;About KWin development, it has gotten some compositing fixes &amp;amp; improvements lately, and I have a new eyecandy screenshot to show as well. I implemented soft shadows for windows. They still suck a bit (especially at the corners), but less than before and it should be possible to improve the corners with some more work as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6144115306124694421-5190360242876727687?l=rivolaks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rivolaks.blogspot.com/feeds/5190360242876727687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6144115306124694421&amp;postID=5190360242876727687' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6144115306124694421/posts/default/5190360242876727687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6144115306124694421/posts/default/5190360242876727687'/><link rel='alternate' type='text/html' href='http://rivolaks.blogspot.com/2007/06/kwin-performance-and-shadows.html' title='KWin performance and shadows'/><author><name>Rivo Laks</name><uri>http://www.blogger.com/profile/06873873820115729073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_3ONM3XBfS0M/RnLC3xDe64I/AAAAAAAAAAM/a11TFYDMRNI/s72-c/kwin-softshadows.jpg' height='72' width='72'/><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6144115306124694421.post-3856411531950460008</id><published>2007-05-29T19:55:00.000+03:00</published><updated>2007-05-29T23:37:42.856+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><category scheme='http://www.blogger.com/atom/ns#' term='KWin'/><title type='text'>KWin effects config &amp; another video</title><content type='html'>During the last days I've been working on making KWin's effects configurable from a KConfig module. Until now, if you wanted to enable/disable an effect, your only possibility was using DBus. DBus support is still there of course, but now you can alternatively use KPluginSelector widget (which got a nice makeover thanks to &lt;a href="http://ereslibre.es/"&gt;Rafael Fernandez Lopez aka ereslibre&lt;/a&gt;) which shows up among other KWin config modules when you RMB on window title and choose "Configure Window Behaviour".&lt;br /&gt;Internally, KWin effects are now services, so we use ksycoca to get a list of them as well as find out in which library a given effect is. This made the code tiny bit simpler and might also result in some performance improvement.&lt;br /&gt;&lt;br /&gt;Additionally, effects can now have their own config modules as well, so you can fine-tune them to your personal preference. ATM only two effects (shadow and presentwindows) are configurable, but more will certainly follow.&lt;br /&gt;&lt;br /&gt;I wanted to make a video of config possibilites, but it evolved into a much longer video which briefly shows you how to enable compositing and how to choose and configure effects. It also shows some of the (IMHO) more important effects. The 6-minute video can be found at &lt;a href="http://www.youtube.com/watch?v=4WBLlc6xCQ4"&gt;YouTube&lt;/a&gt;.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update&lt;/span&gt;: there's also 16mb &lt;a href="http://freehackershosting.free.fr/rivo/kwin-compositing-070529.avi"&gt;.avi&lt;/a&gt; with slightly better quality, but it's server could be slower than YouTube.&lt;br /&gt;&lt;br /&gt;Finally, it looks like I've been added to Planet KDE :-)&lt;br /&gt;If you're interested in more KWin stuff, you might want to check out my &lt;a href="http://rivolaks.blogspot.com/2007/05/kwin-videos-blur-effect.html"&gt;previous post&lt;/a&gt; as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6144115306124694421-3856411531950460008?l=rivolaks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rivolaks.blogspot.com/feeds/3856411531950460008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6144115306124694421&amp;postID=3856411531950460008' title='23 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6144115306124694421/posts/default/3856411531950460008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6144115306124694421/posts/default/3856411531950460008'/><link rel='alternate' type='text/html' href='http://rivolaks.blogspot.com/2007/05/kwin-effects-config-another-video.html' title='KWin effects config &amp; another video'/><author><name>Rivo Laks</name><uri>http://www.blogger.com/profile/06873873820115729073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>23</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6144115306124694421.post-5352270030111701991</id><published>2007-05-03T21:11:00.000+03:00</published><updated>2007-05-29T22:54:41.410+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><category scheme='http://www.blogger.com/atom/ns#' term='KWin'/><title type='text'>KWin videos, blur effect</title><content type='html'>Almost a week ago I &lt;a href="http://lists.kde.org/?l=kwin&amp;m=117777455002576&amp;amp;w=2"&gt;added blur effect to KWin&lt;/a&gt;. It's purpose is to blur background of translucent windows to make text in such windows more readable. With standard translucency, if there's a window containing text below a translucent window, then the text in the translucent window is &lt;a href="http://freehackers.org/%7Erivo/kwin/kwin-blur1-noblur.jpg"&gt;hardly readable&lt;/a&gt;. The effect blurs out fine details such as text, resulting in much &lt;a href="http://freehackers.org/%7Erivo/kwin/kwin-blur1.jpg"&gt;better and usable transparency&lt;/a&gt;. While the background windows are blurred, they're still visible enough to see movement or changes, making transparency useful for e.g. monitoring activity of Konsole windows.&lt;br /&gt;&lt;br /&gt;I've made two videos as well. First one (&lt;a href="http://youtube.com/watch?v=4fHubvqThXw"&gt;YouTube link&lt;/a&gt;, &lt;a href="http://freehackershosting.free.fr/rivo/kwin-liquid-1.avi"&gt;direct link&lt;/a&gt;) shows just a silly demo effect that applies some waves to your desktop. It's not physical simulation of liquid, though that would now be possible as well in case anyone's interested ;-)&lt;br /&gt;&lt;br /&gt;The second one (&lt;a href="http://youtube.com/watch?v=m0p2DuOjfZY"&gt;YouTube&lt;/a&gt;, &lt;a href="http://freehackershosting.free.fr/rivo/kwin-blur-1.avi"&gt;direct&lt;/a&gt;) shows the blur effect itself. Also note that in conjunction with the fade effect, which makes windows smoothly fade in/out when they're created/destroyed, it blurs out background of new windows when they fade in. It's subtle, but you can see it with menus in the video.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update&lt;/span&gt;: added YouTube links for both videos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6144115306124694421-5352270030111701991?l=rivolaks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rivolaks.blogspot.com/feeds/5352270030111701991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6144115306124694421&amp;postID=5352270030111701991' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6144115306124694421/posts/default/5352270030111701991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6144115306124694421/posts/default/5352270030111701991'/><link rel='alternate' type='text/html' href='http://rivolaks.blogspot.com/2007/05/kwin-videos-blur-effect.html' title='KWin videos, blur effect'/><author><name>Rivo Laks</name><uri>http://www.blogger.com/profile/06873873820115729073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6144115306124694421.post-8682166964633518898</id><published>2007-05-03T17:13:00.000+03:00</published><updated>2007-05-03T20:43:43.400+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><category scheme='http://www.blogger.com/atom/ns#' term='KWin'/><category scheme='http://www.blogger.com/atom/ns#' term='GSoC'/><title type='text'>Introduction</title><content type='html'>Hello everyone.&lt;br /&gt;&lt;br /&gt;Short introduction: I'm an Estonian student, soon finishing my first year in university. I've been involved in open-source development for several years, working on the &lt;a href="http://boson.eu.org/"&gt;Boson&lt;/a&gt; game in the past though unfortunately it's development has halted for now.&lt;br /&gt;&lt;br /&gt;Since the beginning of this year I've been involved in KWin development, creating various compositing effects as well as separating effects interface into a library to support 3rd-party effects. Stay tuned for more KWin-related stuff soon.&lt;br /&gt;&lt;br /&gt;Last but not least, I was accepted into Google's Summer of Code program and will be working on an &lt;a href="http://code.google.com/soc/kde/appinfo.html?csaid=1EF6392A4C8AEADD"&gt;icon cache&lt;/a&gt;, mentored by &lt;a href="http://aseigo.blogspot.com/"&gt;aseigo&lt;/a&gt;. The purpose of it is to make application startup faster by putting icons into cache which eliminates the need to search for them on the disk (there are many directories where the icons might be and searching through them takes time). Also it will act as SVG cache so that SVG icons can be used without having to convert them into raster format every time.&lt;br /&gt;&lt;br /&gt;This blog will contain news about KWin, my GSoC project and anything else KDE-related that I might be working on in the future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6144115306124694421-8682166964633518898?l=rivolaks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rivolaks.blogspot.com/feeds/8682166964633518898/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6144115306124694421&amp;postID=8682166964633518898' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6144115306124694421/posts/default/8682166964633518898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6144115306124694421/posts/default/8682166964633518898'/><link rel='alternate' type='text/html' href='http://rivolaks.blogspot.com/2007/05/introduction.html' title='Introduction'/><author><name>Rivo Laks</name><uri>http://www.blogger.com/profile/06873873820115729073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>
