<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.3" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>Alexander Larsson</title>
	<link>http://blogs.gnome.org/alexl</link>
	<description>Cool links and commentary</description>
	<pubDate>Thu, 07 Feb 2008 16:52:03 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
	<language>en</language>
			<item>
		<title>Making backtraces readable</title>
		<link>http://blogs.gnome.org/alexl/2008/02/07/making-backtraces-readable/</link>
		<comments>http://blogs.gnome.org/alexl/2008/02/07/making-backtraces-readable/#comments</comments>
		<pubDate>Thu, 07 Feb 2008 16:37:16 +0000</pubDate>
		<dc:creator>alexl</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/alexl/2008/02/07/making-backtraces-readable/</guid>
		<description><![CDATA[Reading gdb backtraces from Gtk+ applications can be a pain, as the signal emissions tend make them very long and hard to read. Today i wrote a small application that compresses signal emissions and some other common gnome stuff in gdb backtraces.
For example, take this 147 frames long backtrace i&#8217;m currently working on. Its pretty [...]]]></description>
			<content:encoded><![CDATA[<p>Reading gdb backtraces from Gtk+ applications can be a pain, as the signal emissions tend make them very long and hard to read. Today i wrote a <a href="http://www.gnome.org/~alexl/parse_bt.py">small application</a> that compresses signal emissions and some other common gnome stuff in gdb backtraces.</p>
<p>For example, take this <a href="http://bugzilla.gnome.org/attachment.cgi?id=103925&amp;action=view">147 frames long backtrace</a> i&#8217;m currently working on. Its pretty much a pain to read.</p>
<p>With my app it turns into <a href="http://www.gnome.org/~alexl/filtered-bt.txt">this</a> instead, which is much nicer. Here are some examples:</p>
<pre>#7 ... segfault caught by bug-buddy
#8 &lt;signal handler called&gt; ()
#9 __kernel_vsyscall ()</pre>
<pre></pre>
<pre>#36 gtk_scrolled_window_destroy (object=0x82bc538) at gtkscrolledwindow.c:799
     ...
#43 gtk_object_dispose (gobject=0x82bc538) at gtkobject.c:418
#44 gtk_widget_dispose (object=0x82bc538) at gtkwidget.c:7851
#45 fm_tree_view_dispose (object=0x82bc538) at fm-tree-view.c:1457</pre>
<pre></pre>
<pre>#115 gtk_object_destroy (object=0x82d0200) at gtkobject.c:403
#120 ... emitting signal 219 on instance 0x5954
#121 _gtk_action_emit_activate (action=0x82c8e60) at gtkaction.c:872</pre>
<pre></pre>
<pre>#130 gtk_window_key_press_event (widget=0x82d0200, event=0x83716e8) at gtkwindow.c:4961
#140 ... dispatching GdkEvent 0x83716e8 to widget 0x82d0200
#141 g_main_context_dispatch (context=0x819fca0) at gmain.c:2064</pre>
<p>Any chance something like this could be integrated with bugzilla?</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/alexl/2008/02/07/making-backtraces-readable/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Nautilus gio-branch merged - be careful</title>
		<link>http://blogs.gnome.org/alexl/2007/11/30/nautilus-gio-branch-merged-be-careful/</link>
		<comments>http://blogs.gnome.org/alexl/2007/11/30/nautilus-gio-branch-merged-be-careful/#comments</comments>
		<pubDate>Fri, 30 Nov 2007 15:00:41 +0000</pubDate>
		<dc:creator>alexl</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/alexl/2007/11/30/nautilus-gio-branch-merged-be-careful/</guid>
		<description><![CDATA[Today I got most of file moving working in nautilus-gio, so that means that most functionality is there, even if its quite raw and not very tested. Its time to get more people involved in testing and working on the new codebase.
So, I just merged the nautilus gio-branch to HEAD.
WARNING: Its still far from done, [...]]]></description>
			<content:encoded><![CDATA[<p>Today I got most of file moving working in nautilus-gio, so that means that most functionality is there, even if its quite raw and not very tested. Its time to get more people involved in testing and working on the new codebase.</p>
<p>So, I just merged the nautilus gio-branch to HEAD.</p>
<p><strong>WARNING</strong>: Its still far from done, and it might eat your files. Don&#8217;t use in anger! If it breaks you get to keep both pieces.</p>
<p>There is a list of things left todo on the <a href="http://live.gnome.org/GioToDo">wiki</a>.  But even after that is finished there is bound to be a bunch of stuf to be fixed.</p>
<p>So, use with caution, and give feedback.</p>
<p><strong>UPDATE:</strong>  Please file bugs against the GIO component of nautilus in bugzilla, so we can track this</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/alexl/2007/11/30/nautilus-gio-branch-merged-be-careful/feed/</wfw:commentRss>
		</item>
		<item>
		<title>gio-standalone merged into glib</title>
		<link>http://blogs.gnome.org/alexl/2007/11/26/gio-standalone-merged-into-glib/</link>
		<comments>http://blogs.gnome.org/alexl/2007/11/26/gio-standalone-merged-into-glib/#comments</comments>
		<pubDate>Mon, 26 Nov 2007 16:40:01 +0000</pubDate>
		<dc:creator>alexl</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/alexl/2007/11/26/gio-standalone-merged-into-glib/</guid>
		<description><![CDATA[I just commited the gio code into glib:
185 files changed, 52768 insertions(+), 8 deletions(-)
This is a pretty large piece of work. Its still got some areas that need work, and the docs are far from ready, however the API is imho pretty powerful and easy to understand. If your app uses file I/O in any [...]]]></description>
			<content:encoded><![CDATA[<p>I just commited the gio code into glib:</p>
<p>185 files changed, 52768 insertions(+), 8 deletions(-)</p>
<p>This is a pretty large piece of work. Its still got some areas that need work, and the docs are far from ready, however the API is imho pretty powerful and easy to understand. If your app uses file I/O in any way, please take a look at the GIO APIs and give feedback.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/alexl/2007/11/26/gio-standalone-merged-into-glib/feed/</wfw:commentRss>
		</item>
		<item>
		<title>File operations in nautilus-gio and adventures in the land of PolicyKit</title>
		<link>http://blogs.gnome.org/alexl/2007/11/23/file-operations-in-nautilus-gio-and-adventures-in-the-land-of-policykit/</link>
		<comments>http://blogs.gnome.org/alexl/2007/11/23/file-operations-in-nautilus-gio-and-adventures-in-the-land-of-policykit/#comments</comments>
		<pubDate>Fri, 23 Nov 2007 14:43:56 +0000</pubDate>
		<dc:creator>alexl</dc:creator>
		
		<category><![CDATA[Nautilus]]></category>

		<category><![CDATA[gio]]></category>

		<category><![CDATA[gvfs]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/alexl/2007/11/23/file-operations-in-nautilus-gio-and-adventures-in-the-land-of-policykit/</guid>
		<description><![CDATA[This week I&#8217;ve been working on adding file operations to the gio-branch of nautilus. Today I finished enough to hook up a mostly finished copy operation into the UI. This is completely new code, since gio doesn&#8217;t have the gnome_vfs_xfer API that implemented complicated file operations in gnome-vfs.
So, while this is doing the same thing [...]]]></description>
			<content:encoded><![CDATA[<p>This week I&#8217;ve been working on adding file operations to the gio-branch of nautilus. Today I finished enough to hook up a mostly finished copy operation into the UI. This is completely new code, since gio doesn&#8217;t have the gnome_vfs_xfer API that implemented complicated file operations in gnome-vfs.</p>
<p>So, while this is doing the same thing as the old code its structured in a completely different way which is much nicer to work with. And along the way I made some other changes that was easy to do with the new improved design. Check out this screencast of the new features:</p>
<p><a href="http://www.gnome.org/~alexl/nautilus-gio-copy.ogg" title="Nautilus-gio copy"></p>
<p><img src="http://blogs.gnome.org/alexl/files/2007/11/nautilus-gio-copy.png" alt="nautilus-gio-copy.png" /></p>
<p></a></p>
<p>Next week I will continue working on the rest of the file operations. It will be a lot easier now that the general structure and a lot of common code is written.</p>
<p>Also, next week I will be starting to merge libgio from the gio-standalone module into the glib module (as a separate libgio-2.0.so). The gio code has all features required by nautilus (as we can see from the almost finished port), and has been pretty API and ABI stable for a while. So, this is a good time to merge it and get more people looking at the code and using it in their applications.</p>
<h3>PolicyKit vs Nautilus</h3>
<p>But all that is not whats got me most excited right now. Instead its this idea I got about using PolicyKit and gio in order to implement system administrator features in Nautilus. Basically, you&#8217;d do a file operation on some system file, which gives you an error dialog saying you don&#8217;t have permissions to do this. But the error dialog has a button that lets you authenticate (with e.g. the root password) and continue the operation with root rights.</p>
<p>This is quite simple to implement in nautilus-gio, because all I/O operations go through the GFile interface. You just create an implementation of GFile that proxies all operations to a setuid helper program (which uses PolicyKit to authenticate). With this done,  all the Nautilus code will work unmodified with this new backend, all you have to do is make sure it uses this new GFile implementation.</p>
<p>This is much better than running your entire Nautilus process (or even desktop) as root, for multiple reasons. First of all your Nautilus application will integrate nicely with your desktop (using your theme/prefs/etc instead of the root ones). Secondly a lot less code is running as root, which means that the risk for a security breach or accidents as root are much smaller. Third, you can configure this to use sudo-style authentication which means you don&#8217;t need to give out the root password (or even have one) .</p>
<p>Still, this work will have to wait, as the main priority right now is getting the gio-branch into a useful shape so that it can be merged into svn HEAD. I think this will happen soon. Maybe next week even.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/alexl/2007/11/23/file-operations-in-nautilus-gio-and-adventures-in-the-land-of-policykit/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Last gnome-vfs symbol gone!</title>
		<link>http://blogs.gnome.org/alexl/2007/11/02/last-gnome-vfs-symbol-gone/</link>
		<comments>http://blogs.gnome.org/alexl/2007/11/02/last-gnome-vfs-symbol-gone/#comments</comments>
		<pubDate>Fri, 02 Nov 2007 14:12:52 +0000</pubDate>
		<dc:creator>alexl</dc:creator>
		
		<category><![CDATA[Nautilus]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/alexl/2007/11/02/last-gnome-vfs-symbol-gone/</guid>
		<description><![CDATA[The nautilus gio-branch today reached a major milestone. There is now zero references to gnome-vfs symbols in the nautilus binary. This was accomplished by disabling parts of the file operations code in nautilus, so the resulting nautilus can&#8217;t actually do some operations. However, all the file browsing and launching code is working.
At this point we&#8217;re [...]]]></description>
			<content:encoded><![CDATA[<p>The nautilus gio-branch today reached a major milestone. There is now zero references to gnome-vfs symbols in the nautilus binary. This was accomplished by disabling parts of the file operations code in nautilus, so the resulting nautilus can&#8217;t actually do some operations. However, all the file browsing and launching code is working.</p>
<p>At this point we&#8217;re getting close to a state where we can get people to start testing the new codebase, and thinking about how to integrate it into Gnome 2.22 and glib. To get this going, and to get more people involved with gio I&#8217;ve started a <a href="http://live.gnome.org/GioToDo">wiki page</a> listing some of the things that remain to do in the various levels of the gio stack.</p>
<p>Consider this a call for action. If you&#8217;re interested in this, please take a look at the gio APIs, try it out, and if you&#8217;re even more adventurous, pick something from the TODO list and start working on it.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/alexl/2007/11/02/last-gnome-vfs-symbol-gone/feed/</wfw:commentRss>
		</item>
		<item>
		<title>gnome-vfs is going down, down, down</title>
		<link>http://blogs.gnome.org/alexl/2007/10/26/gnome-vfs-is-going-down-down-down/</link>
		<comments>http://blogs.gnome.org/alexl/2007/10/26/gnome-vfs-is-going-down-down-down/#comments</comments>
		<pubDate>Fri, 26 Oct 2007 12:49:54 +0000</pubDate>
		<dc:creator>alexl</dc:creator>
		
		<category><![CDATA[Nautilus]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/alexl/2007/10/26/gnome-vfs-is-going-down-down-down/</guid>
		<description><![CDATA[Work on the Nautilus gio-branch continues. We&#8217;re now down to 203 gnome-vfs calls in nautilus (803 initially) and zero in eel (92 originally). Now, 203 calls still sounds like a lot, but lets take a look at what uses gnome-vfs:
  1 libnautilus-private/nautilus-file-operations-progress.c
  3 libnautilus-private/nautilus-file.c
  4 libnautilus-private/nautilus-program-choosing.c
126 libnautilus-private/nautilus-file-operations.c
  3 libnautilus-private/nautilus-vfs-utils.c
  5 [...]]]></description>
			<content:encoded><![CDATA[<p>Work on the Nautilus gio-branch continues. We&#8217;re now down to 203 gnome-vfs calls in nautilus (803 initially) and zero in eel (92 originally). Now, 203 calls still sounds like a lot, but lets take a look at what uses gnome-vfs:</p>
<pre>  1 libnautilus-private/nautilus-file-operations-progress.c</pre>
<pre>  3 libnautilus-private/nautilus-file.c</pre>
<pre>  4 libnautilus-private/nautilus-program-choosing.c</pre>
<pre>126 libnautilus-private/nautilus-file-operations.c</pre>
<pre>  3 libnautilus-private/nautilus-vfs-utils.c</pre>
<pre>  5 libnautilus-private/nautilus-file-utilities.c</pre>
<pre>  9 libnautilus-private/nautilus-dnd.c</pre>
<pre>  7 src/file-manager/fm-tree-view.c</pre>
<pre>  4 src/file-manager/fm-icon-view.c</pre>
<pre>  1 src/file-manager/fm-directory-view.c</pre>
<pre>  1 src/file-manager/fm-error-reporting.c</pre>
<pre>  8 src/file-manager/fm-directory-view-old.c</pre>
<pre>  5 src/nautilus-main.c</pre>
<pre>  1 src/nautilus-window-manage-views.c</pre>
<pre> 23 src/nautilus-connect-server-dialog.c</pre>
<p>Almost all of it is in nautilus-file-operations.c, which is the implementation of things like copying/moving files, and displaying progress and other dialogs for that. This is certainly very important functionality, and it will be a bunch of work converting it, especially since it heavily uses the gnome_vfs_xfer API, which (thankfully) doesn&#8217;t exist in gio. But apart from that almost all gnome-vfs use in Nautilus is gone</p>
<p>I&#8217;ve also cleaned up the code in several places, removing crufty, old and unused code, in places replacing it with more modern Gtk+/glib functionality. Eel especially has dropped a lot of code. Lots of creds go to Paolo Borelli who has done a bunch of work on this.</p>
<p>On a slightly more end-user interesting tangent, today I updated the fuse code that hpj wrote (it had stopped working due to some internal changes) and integrated it with the gvfs backend for libgio. This means <em>g_file_get_path()</em> will now return a local fuse path even for non-local files. In practice this mean applications that do not access files via gio can still load and save files on e.g. remote shares like smb, ftp, sftp, etc.</p>
<p>I made a <a href="http://www.gnome.org/~alexl/nautilus-gio.ogg">screencast</a> to show this off. Check it out!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/alexl/2007/10/26/gnome-vfs-is-going-down-down-down/feed/</wfw:commentRss>
		</item>
		<item>
		<title>You can pick any new feature you want, as long as it is this one</title>
		<link>http://blogs.gnome.org/alexl/2007/10/16/you-can-pick-any-new-feature-you-want-as-long-as-it-is-this-one/</link>
		<comments>http://blogs.gnome.org/alexl/2007/10/16/you-can-pick-any-new-feature-you-want-as-long-as-it-is-this-one/#comments</comments>
		<pubDate>Tue, 16 Oct 2007 09:07:05 +0000</pubDate>
		<dc:creator>alexl</dc:creator>
		
		<category><![CDATA[Nautilus]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/alexl/2007/10/16/you-can-pick-any-new-feature-you-want-as-long-as-it-is-this-one/</guid>
		<description><![CDATA[This last week I&#8217;ve been working on the icon and thumbnail handling on the nautilus gio-branch. gnome-vfs doesn&#8217;t really handle icons at all in the API, so all the code related to selecting and rendering icons for files was done entirely in nautilus. The way this was done was also a bit weird compared to [...]]]></description>
			<content:encoded><![CDATA[<p>This last week I&#8217;ve been working on the icon and thumbnail handling on the nautilus gio-branch. gnome-vfs doesn&#8217;t really handle icons at all in the API, so all the code related to selecting and rendering icons for files was done entirely in nautilus. The way this was done was also a bit weird compared to how other things worked.</p>
<p>Nautilus has this abstraction called <em>NautilusFile</em> that contains all the information we know about the file. You can request for it to load specific information, and to get notified when it changes. However, icons were not handled by this. Instead there is a class called <em>NautilusIconFactory</em> that lets you map from file to icon (and incidentally handle things like icon caching, loading thumbnails, etc).  Sometimes the icons can change though, like when the icon theme is changed, so all consumers had to also watch the <em>icons_changes</em> signal on the icon factory (in addition to the <em>changed</em> signal on the <em>NautilusFile</em>).</p>
<p>gio adds support for icons (and to some extents thumbnails) directly in the vfs. In the normal case we decide what icon to use for a file in the same way (based on the mimetype). However, this happens in the gio backend, so if the backend has special needs for icons it can do whatever it wants.</p>
<p>This is great stuff and will allow backends to be more expressive, and applications need less code to handle icons. It does however mean that the code in Nautilus doesn&#8217;t really match the new APIs. So, since I had to completely restructure the code anyway, its with great pleasure I can announce that since yesterday <em>NautilusIconFactory</em> has been removed from the gio-branch, and the new icon and thumbnailing code is integrated with the <em>NautilusFile</em> object in a much saner way.</p>
<p>Most of this work is just changes needed to work with gio rather than new features. I did however add one new feature. If you resize icons so that they are larger that the thumbnail generated for them (i.e. 128 pixels) they look very blurry. I&#8217;ve seen a lot of people with such scaled up pictures of pets or loved ones on the desktop, and it looks quite ugly. So, I made the thumbnail loader try to use the file itself as thumbnail if the icon is scaled above 128 pixels:</p>
<p align="center"><img src="http://blogs.gnome.org/alexl/files/2007/10/before2.png" /><br />
Wax On!</p>
<p align="center"><img src="http://blogs.gnome.org/alexl/files/2007/10/after2.png" /><br />
Wax Off!</p>
<p>None of this work significantly brings down the number of gnome-vfs calls in nautilus mentioned in my last blog. We&#8217;re now down from 803 to 510 compared to 531 in last entry.  I think  I will need to convert the GnomeVFSVolumeManager calls to gio now, as that will bite of a large chunk of this.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/alexl/2007/10/16/you-can-pick-any-new-feature-you-want-as-long-as-it-is-this-one/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Nautilus: now eats 33% less babies</title>
		<link>http://blogs.gnome.org/alexl/2007/10/04/nautilus-now-eats-33-less-babies/</link>
		<comments>http://blogs.gnome.org/alexl/2007/10/04/nautilus-now-eats-33-less-babies/#comments</comments>
		<pubDate>Thu, 04 Oct 2007 16:00:52 +0000</pubDate>
		<dc:creator>alexl</dc:creator>
		
		<category><![CDATA[Nautilus]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/alexl/2007/10/04/nautilus-now-eats-33-less-babies/</guid>
		<description><![CDATA[The work on the nautilus-gio branch continues:
[alex@localhost nautilus-gio]$ find -name "*.c" &#124; xargs grep gnome_vfs_ &#124;  wc -l
531
Where it originally was:
[alex@localhost nautilus]$ find -name "*.[ch]" &#124; xargs grep gnome_vfs_ &#124;  wc -l
803
So, 33% of all gnome vfs calls have been removed.
This doesn&#8217;t seem like a lot, but much of the core of nautilus [...]]]></description>
			<content:encoded><![CDATA[<p>The work on the nautilus-gio branch continues:</p>
<pre>[alex@localhost nautilus-gio]$ find -name "*.c" | xargs grep gnome_vfs_ |  wc -l</pre>
<pre>531</pre>
<p>Where it originally was:</p>
<pre>[alex@localhost nautilus]$ find -name "*.[ch]" | xargs grep gnome_vfs_ |  wc -l</pre>
<pre>803</pre>
<p>So, 33% of all gnome vfs calls have been removed.<br />
This doesn&#8217;t seem like a lot, but much of the core of nautilus has moved over.</p>
<p>These are the current uses of gnome vfs in nautilus-gio:</p>
<pre>      2 gnome_vfs_async_cancel</pre>
<pre>      1 gnome_vfs_async_close</pre>
<pre>      1 gnome_vfs_async_load_directory_uri</pre>
<pre>      1 gnome_vfs_async_open</pre>
<pre>      2 gnome_vfs_async_read</pre>
<pre>      2 gnome_vfs_async_set_file_info</pre>
<pre>      6 gnome_vfs_async_xfer</pre>
<pre>      1 gnome_vfs_check_same_fs_uris</pre>
<pre>      2 gnome_vfs_close</pre>
<pre>      2 gnome_vfs_connect_to_server</pre>
<pre>      1 gnome_vfs_directory_list_load</pre>
<pre>      1 gnome_vfs_directory_visit_uri</pre>
<pre>      2 gnome_vfs_drive_compare</pre>
<pre>      3 gnome_vfs_drive_eject</pre>
<pre>      2 gnome_vfs_drive_get_activation_uri</pre>
<pre>      1 gnome_vfs_drive_get_device_path</pre>
<pre>      8 gnome_vfs_drive_get_device_type</pre>
<pre>      2 gnome_vfs_drive_get_display_name</pre>
<pre>      1 gnome_vfs_drive_get_icon</pre>
<pre>      2 gnome_vfs_drive_get_mounted_volumes</pre>
<pre>      8 gnome_vfs_drive_is_mounted</pre>
<pre>      1 gnome_vfs_drive_is_user_visible</pre>
<pre>      5 gnome_vfs_drive_mount</pre>
<pre>      3 gnome_vfs_drive_ref</pre>
<pre>      3 gnome_vfs_drive_unmount</pre>
<pre>     17 gnome_vfs_drive_unref</pre>
<pre>      1 gnome_vfs_error_quark</pre>
<pre>      5 gnome_vfs_escape_path_string</pre>
<pre>      1 gnome_vfs_escape_slashes</pre>
<pre>      6 gnome_vfs_escape_string</pre>
<pre>      5 gnome_vfs_file_info_list_free</pre>
<pre>      8 gnome_vfs_file_info_new</pre>
<pre>      1 gnome_vfs_file_info_to_gio</pre>
<pre>      9 gnome_vfs_file_info_unref</pre>
<pre>      2 gnome_vfs_file_type_from_g_file_type</pre>
<pre>      2 gnome_vfs_file_type_to_g_file_type</pre>
<pre>      9 gnome_vfs_find_directory</pre>
<pre>      5 gnome_vfs_get_file_info</pre>
<pre>      1 gnome_vfs_get_uri_scheme</pre>
<pre>      1 gnome_vfs_get_volume_free_space</pre>
<pre>     18 gnome_vfs_get_volume_monitor</pre>
<pre>      2 gnome_vfs_init</pre>
<pre>      1 gnome_vfs_make_directory</pre>
<pre>      1 gnome_vfs_make_directory_for_uri</pre>
<pre>      5 gnome_vfs_make_uri_from_input</pre>
<pre>      1 gnome_vfs_make_uri_from_input_with_trailing_ws</pre>
<pre>      1 gnome_vfs_make_uri_from_shell_arg</pre>
<pre>      1 gnome_vfs_method_get</pre>
<pre>      2 gnome_vfs_monitor_add</pre>
<pre>      2 gnome_vfs_monitor_cancel</pre>
<pre>      1 gnome_vfs_open</pre>
<pre>      1 gnome_vfs_read</pre>
<pre>      1 gnome_vfs_result_to_error</pre>
<pre>      7 gnome_vfs_result_to_string</pre>
<pre>      5 gnome_vfs_shutdown</pre>
<pre>      4 gnome_vfs_unescape_string</pre>
<pre>      4 gnome_vfs_unescape_string_for_display</pre>
<pre>      2 gnome_vfs_unlink</pre>
<pre>      7 gnome_vfs_uri_append_file_name</pre>
<pre>      3 gnome_vfs_uri_append_string</pre>
<pre>      1 gnome_vfs_uri_dup</pre>
<pre>      7 gnome_vfs_uri_equal</pre>
<pre>      2 gnome_vfs_uri_exists</pre>
<pre>      4 gnome_vfs_uri_extract_dirname</pre>
<pre>      4 gnome_vfs_uri_extract_short_name</pre>
<pre>      2 gnome_vfs_uri_extract_short_path_name</pre>
<pre>      7 gnome_vfs_uri_get_host_name</pre>
<pre>      1 gnome_vfs_uri_get_host_port</pre>
<pre>      9 gnome_vfs_uri_get_parent</pre>
<pre>      2 gnome_vfs_uri_get_path</pre>
<pre>      2 gnome_vfs_uri_get_scheme</pre>
<pre>      3 gnome_vfs_uri_get_user_name</pre>
<pre>      3 gnome_vfs_uri_has_parent</pre>
<pre>      1 gnome_vfs_uri_is_local</pre>
<pre>      6 gnome_vfs_uri_is_parent</pre>
<pre>      1 gnome_vfs_uri_list_extract_uris</pre>
<pre>      8 gnome_vfs_uri_list_free</pre>
<pre>      2 gnome_vfs_uri_make_full_from_relative</pre>
<pre>     54 gnome_vfs_uri_new</pre>
<pre>      4 gnome_vfs_uri_ref</pre>
<pre>     12 gnome_vfs_uris_match</pre>
<pre>     18 gnome_vfs_uri_to_string</pre>
<pre>     68 gnome_vfs_uri_unref</pre>
<pre>      1 gnome_vfs_url_show_with_env</pre>
<pre>      4 gnome_vfs_volume_compare</pre>
<pre>      4 gnome_vfs_volume_eject</pre>
<pre>     12 gnome_vfs_volume_get_activation_uri</pre>
<pre>      6 gnome_vfs_volume_get_device_type</pre>
<pre>      7 gnome_vfs_volume_get_display_name</pre>
<pre>      2 gnome_vfs_volume_get_drive</pre>
<pre>      1 gnome_vfs_volume_get_filesystem_type</pre>
<pre>      5 gnome_vfs_volume_get_icon</pre>
<pre>      2 gnome_vfs_volume_get_volume_type</pre>
<pre>      1 gnome_vfs_volume_handles_trash</pre>
<pre>      1 gnome_vfs_volume_is_read_only</pre>
<pre>      6 gnome_vfs_volume_is_user_visible</pre>
<pre>      2 gnome_vfs_volume_monitor_get_connected_drives</pre>
<pre>      1 gnome_vfs_volume_monitor_get_drive_by_id</pre>
<pre>      7 gnome_vfs_volume_monitor_get_mounted_volumes</pre>
<pre>      1 gnome_vfs_volume_monitor_get_volume_by_id</pre>
<pre>      5 gnome_vfs_volume_monitor_get_volume_for_path</pre>
<pre>      6 gnome_vfs_volume_ref</pre>
<pre>      3 gnome_vfs_volume_unmount</pre>
<pre>     29 gnome_vfs_volume_unref</pre>
<pre>      1 gnome_vfs_xfer_uri</pre>
<p>A lot of these are low hanging fruit. For instance, there are 163 calls to the gnome vfs volume monitoring API, which has more or less a direct translation to GIO. Another large part is uri handling which should be translatable to GFile manipulation with some work. So it should be possible to get these numbers a lot lower fast.</p>
<p>However, other parts, like gnome_vfs_xfer() needs significant work. It is only called once, but is a large part of nautilus functionallity, basically doing all sorts of file copies and moves.</p>
<p>So, we&#8217;re going places, but we&#8217;re far from there yet.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/alexl/2007/10/04/nautilus-now-eats-33-less-babies/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The revolution is coming</title>
		<link>http://blogs.gnome.org/alexl/2007/09/21/the-revolution-is-coming/</link>
		<comments>http://blogs.gnome.org/alexl/2007/09/21/the-revolution-is-coming/#comments</comments>
		<pubDate>Fri, 21 Sep 2007 15:14:56 +0000</pubDate>
		<dc:creator>alexl</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/alexl/2007/09/21/the-revolution-is-coming/</guid>
		<description><![CDATA[I&#8217;ve started working on converting Nautilus to use the gio API instead of gnome-vfs. Its nowhere near done, but today I finished converting the basic file information reading and handling to gio.

Here it is, in all its glory!
Of course, it looks exactly the same as before, but its new and shiny on the inside.  [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve started working on converting Nautilus to use the gio API instead of gnome-vfs. Its nowhere near done, but today I finished converting the basic file information reading and handling to gio.</p>
<p><a href="http://blogs.gnome.org/alexl/files/2007/09/nautilus-gio-1.png" title="Nautilus gio"><img src="http://blogs.gnome.org/alexl/files/2007/09/nautilus-gio-1.png" alt="Nautilus screenshot" /></a></p>
<p>Here it is, in all its glory!</p>
<p>Of course, it looks exactly the same as before, but its new and shiny on the inside. <img src='http://blogs.gnome.org/alexl/wp-content/mu-plugins/tango-smilies/face-smile.png' alt=':-)' class='wp-smiley' width='16' height='16' /> </p>
<p>The code is available in the &#8220;nautilus-gio&#8221; branch in subversion. At the moment it only works with the standard gio local files backend. If you install gvfs it crashes due to some dbus mainloop integration conflict issues.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/alexl/2007/09/21/the-revolution-is-coming/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Glick 0.2 released</title>
		<link>http://blogs.gnome.org/alexl/2007/08/23/glick-02-released/</link>
		<comments>http://blogs.gnome.org/alexl/2007/08/23/glick-02-released/#comments</comments>
		<pubDate>Thu, 23 Aug 2007 08:55:21 +0000</pubDate>
		<dc:creator>alexl</dc:creator>
		
		<category><![CDATA[Glick]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/alexl/2007/08/23/glick-02-released/</guid>
		<description><![CDATA[There was two really embarrasing bugs in the 0.1 release. First of all the argument order was switched around in the description of how to create glicks in the README. Secondly, a bug in the fuse filesystem implementation made it hang after 10 files had been opened.
So, a quick release is in order. Get your [...]]]></description>
			<content:encoded><![CDATA[<p>There was two really embarrasing bugs in the 0.1 release. First of all the argument order was switched around in the description of how to create glicks in the README. Secondly, a bug in the fuse filesystem implementation made it hang after 10 files had been opened.</p>
<p>So, a quick release is in order. Get your fresh new code at the <a href="http://www.gnome.org/~alexl/glick/">glick home page</a>.</p>
<p>Thanks to  Stefan Westerfeld for finding these issues.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/alexl/2007/08/23/glick-02-released/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.873 seconds -->
<!-- Cached page served by WP-Cache -->
