RAW files with ristretto – (GtkPixbufLoader mimetype recognition bug)
In the release-notes for ristretto 0.3.5 last weekend, I mentioned the following:
Most problems with ristretto are actually caused by incorrect mime-type recognition
of the operating-system, identifying raw files (like canon’s CR2 format) as TIFF files.
This will result in an error from the tiff loader, these errors are now displayed in the UI,
making it possible to identify the source of the problem.
Since I could not understand why this happened, I started investigating the problem a bit further.
So, I executed the following commands on my system:
$ mimtype IMG_6635.CR2
IMG_6635.CR2: image/x-canon-cr2
$ file IMG_6635.CR2
IMG_6635.CR2: Canon CR2 raw image data, version 2.0
In my defense, I have seen it return image/tiff in the past, but clearly that was not the case right now. Both commands returned image/x-canon-cr2 just fine.
But opening the raw-files with ristretto (with the libopenraw-gnome backend installed), still gave me TIFF image-loading errors.
So something else must be causing the problems. Apparently, the OS determines the mimetype just fine, but something inside ristretto does not. Checking the source I discovered I was using gdk_pixbuf_loader_new(), which creates a pixbufloader that automagically determines the mimetype based on the stream of data you feed it.
So, I replaced that with a call to gdk_pixbuf_loader_new_with_mime_type (mime_type, NULL) and retrieved the mimetype using GFileInfo.
The commit that fixes this problem is 8dd741057f7b935d8e7c327017d850388ba77767, you can cherry-pick it and install libopenraw-gnome to support the rendering of raw files inside ristretto.
NOTE:
Libopenraw-gnome is still under active development and rendering-bugs can occur. – When the image looks bad, this is not a bug in ristretto, it is probably some terrible photography ;-), or maybe something is not yet fully implemented in libopenraw-gnome.
Using git-master this weekend did not result in any usable whitebalance or exposure compensation for me.
Ristretto 0.1.x — Getting rid of anoyances…
Over the past few years, the top 2 complaints about ristretto have been ‘it leaks memory!‘ and ‘it crashes in this <obscure> way when I press this button‘.
And you know… these people were right. During the past 6 months, my main focus was fixing these problems. After a lot of code-simplification and refactoring, I finally managed to fix all the reported crashes and memory-leaks. (Yes, I know this took a while…)
In my opinion, this made ristretto 0.1.0 the most stable release so far.
But there are still quite some improvements to be made by removing nuisances in the user-experience. Some of these have already been addressed in 0.1.0, including:
- Support for using arrow-keys to navigate through the images
- Additional accelerator for the ‘f’ key for switching to full-screen-mode
- Additional accelerator for the ‘q’ key for quitting ristretto
- Modify scroll-zoom so the mouse-cursor stays above the same region of the image when zooming in or out
- Re-introduce the file-properties dialog.
There are still some things that can be improved with regards to usability, I will work closely with the Xfce Design SIG to identify and improve problems with the ristretto UI. One of the things I will finally start on improving is the sorting-algorithm used for sorting the images on their filenames (Bug #6866), so the images are sorted in a similar order as they are in Thunar.
The main focus during the 0.1.x release-cycles is getting existing functionality to work better, so expect a faster release-schedule featuring smaller changes for the coming months.
Recently in Xfce
This is just a short post with what happened recently in Xfce.
- Xfce4 Power Manager 0.8.0 was released. I did not have time yet to test it, but it looks promising.
- Jannis Pohlmann and Stephan Arts drafted a release process for Xfce. It still needs to be discussed, but it already looks great. Expect some progress on this once the migration to git is done.
- Brian Tarricone worked a lot on the git migration, things are almost settled.
- Jannis Pohlmann is making some awesome progress on Thunar. He developped Tumbler, a D-Bus thumbnailing service based on the thumbnail management D-Bus specification, to replace the old thumbnailing code. A video shows how his first experimental implementation behaves.
- Nick Schermer made a lot of progress on Xfce4 Panel, fixing and lot of bugs and improving performances. His code can be found on git.xfce.org.
- Stephan Arts has improved the git version of Ristretto a lot: it works, supports basic printing and features a new improved user interface.
- It seems that Colin Leroy will be the maintainer of Xfce4 Weather Plugin from now on. Welcome!
- Mike Massonnet rewrote Xfce4 Notes Plugin in Vala, and improved and lot of things at the same time. Expect a release soon.
- Ali Abdallah, the developper of Xfce4 Power Manager, added a new Goodie to the SVN. Parole is a Gstreamer based media player. I did not test it, so I cannot say more...
News Update
A lot of things are going on lately and it turns out I'm way to busy to update my weblog on a regular basis. So, this is just a short post to keep you all updated.
Last two weeks
- I took a new student job at the university, at the Institute of Theoretical Computer Science, which I love most. I'll be working on haplotyping algorithms.
- I went to Barcelona and had a great time at the Ubuntu Developer Summit overall. Stephan and I were very productive. One evening during dinner we discussed our development and release process and later started writing it down. The result is a beautiful document that still needs a bit of polishing. I hope it'll serve as a good foundation for the development and release process of Xfce in the future. Several others commented on it and it looks like we'll give the proposed concept a shot after we've switched to git and all that.
- Even though the week in Barcelona was great for Xfce, I was disappointed with how it went with regards to the cooperation between Xubuntu and Xfce. I talked it through with Stephan and after I got back, I resigned from my position as the Xubuntu Xfce4 Liaison.
At the moment
- I've started to implement the so-called thumbnail management D-Bus specification. My implementation is called Tumbler and it will hopefully start serving thumbnails for other apps soon. I'm planning to use it in Thunar, Stephan has expressed interest in using it in Ristretto and when discussing the specification and the existing hildon-thumbnail implementation, Philip van Hoof told me that Hildon/Nokia might be interested in dropping hildon-thumbnail in favor of Tumbler if it's flexible enough. I'm working on it as much as I can and I'm hoping to do a release within the next few weeks.
- I'm still working on the Transifex installation for Xfce. It's already running but I still need to import all the projects, releases and of course create accounts for maintainers automatically.
- The migration of Xfce to Git is still work in progress. Brian has most of the repository issues sorted out and is now waiting for me to finish the commit mail script. I have two or three possible implementations lying around but I need to have a look at that again.
- Jim needs the documentation repository next week, so I'm about to set it up.
- Our Buildbot server has arrived in Sweden. Today I set up the firewall. Samual is taking care of setting up the Buildbot host VM and other things. We're considering to move a lot of the services not related to development (like the Xfce websites) into separate VMs on that server too, in order to make the current server a development-only machine.
Besides that I'm trying to catch up with the work and personal stuff that piled up while I was away last week. And I really should go and sleep.