Saturday, April 26, 2008

Poppler 0.8.1 released

Available from
http://poppler.freedesktop.org/poppler-0.8.1.tar.gz

Changes since 0.8.0:
core:
 * Do not call FT_Done_Face on a live cairo_font_face_t as it might cause crashes
 * Do not take into account Colorspace resource subdictionary for image XObjects
 * Downsample 16 bit per component images to 8 bit per component so they render

build system:
 * Link to pthread when the system needs it

windows:
 * Fix comparing against NULL instead against INVALID_HANDLE_VALUE when calling FindFirstFile

0.8.2 version is scheduled for May 26th

Testing, patches and bug reports welcome.

Thursday, April 24, 2008

Q_FOREACH is your friend

It's real, foreach makes writing loops much more convenient, but you have to know how to use it, see the following code:


#include <QList>
#include <QtDebug>

class Foo
{
 public:
  Foo()
  {
   qDebug("Empty constructor");
  }

  Foo(int aa, int bb, int cc) : a(aa), b(bb), c(cc)
  {
   qDebug("Constructor");
  }

  Foo(const Foo &f)
  {
   a = f.a;
   b = f.b;
   c = f.c;
   qDebug("Copy constructor");
  }

  int a, b, c;
};

int main(int /*argc*/, char ** /*argv*/)
{
 QList<Foo> list;
 list << Foo(1, 2, 3);
 list << Foo(4, 5, 6);
 list << Foo(7, 8, 9);
 list << Foo(10, 11, 12);
 list << Foo(13, 14, 15);

 foreach(Foo f, list)
  f.a = f.b = f.c = 0;

 foreach(Foo f, list)
  qDebug() << f.a << f.b << f.c;
}


There are two problems in the usage of foreach in this code.

The first problem is serious, it is trying to use foreach to modify the values of vector. The code compiles, but if you run it, you'll notice nothing was changed, why oh why?! may you ask. Because Foo f is a local variable to the foreach, so what you are doing is modifying a variable that exists in this very same line and nothing more.

The second problem is that you are constructing far much more Foo objects than needed, if you look at the output the copy constructor is called each time in the foreach, so the correct way for the debug line would be

 foreach(const Foo &f, list)
  qDebug() << f.a << f.b << f.c;
}


So remember, always that your foreach iterator is not a basic value like an int, double or pointer, use const &, it will be faster and will protect you against the try to use foreach to modify values problem, because

 foreach(const Foo &f, list)
  f.a = f.b = f.c = 0;

will not compile.

KUbuntu 8.04 released with rock solid 3.5.9 goodness...

...unless you try to automount USB devices, because that'll give you a deadlocked kded! HORRAY! It's quite interesting to see how a bug caused for a patch to use LUKS is not fixed or the patch reverted when such an used feature has such a big bug like deadlocking kded...

Tuesday, April 22, 2008

Spanish keyboard, dead ~ or not?

If you are using a Spanish keyboard layout, you may have noticed that in some Xorg update, AltGr+4 stopped typing a ~ and then you had to do AltGr+4+space or AltGr+4+AltGr+4 to get a ~.

This is because a non spanish user requested that change and Xorg people changed it.

I asked it to be reverted as there's no use for a dead ~ in Spanish as we don't have ã nor õ (we have ñ but we have a whole key for that) and the xkb maintainer asked me to run some kind of votation so that people decides what they like more.

So please, if you have an opinion on that issue go to http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=477197 and http://bugs.freedesktop.org/show_bug.cgi?id=9763 to get all the facts and write your opinion to 477197@bugs.debian.org

Dissappointed with SoC results

So, selected KDE SoC projects are out, and i have to say that personally i'm somewhat disappointed.

Personally i think we've done bad decisions in leaving proven KDE people with sensible projects out, while betting for too many non-proven newbies.

Besides that, the IRC meeting had, in my opinion, too much power over the final outcome, and people like me or David that could not attend it, saw how their mentored projects got dismissed when probably if we had been there that would not have happened so easily.

But well, that huge power of the IRC meeting is also probably due to Google's webpage sucking when you have to rate over 250 applications.

So life's hard, nothing to see here, keep moving.

Sunday, April 13, 2008

fglrx blocking Xorg on logout

If you are running Kubuntu Hardy with the flgrx drivers and logging out does not work due to the Xorg process locking up at 100% of CPU usage, you should thank Stefan Carslöv for tracking down the issue to /etc/ati/authatieventsd.sh being unproperly configured, you need to change

XDM_AUTH_MASK=/var/lib/xdm/authdir/authfiles/A$1*

to:

XDM_AUTH_MASK=/var/run/xauth/A$1*

Wednesday, April 02, 2008

iParty X was awesone

This weekend i was with some other spanish KDE dudes (ereslibre, apol, ana`, nefertum and pgquiles) at the Aditel iParty X where we did some talks about KDE. It was a very nice experience being at a Free Software only party.

We celebrated ereslibre's anniversary with a KDE cake and a huge greeting :-)

You can see the photos at http://www.kde.cat/aacid/fotos/ipartyx/ and the Qt4 Dance at http://www.youtube.com/watch?v=EZxmKzbbmEU