Pango CVS and gdkdrawable-fb2.c hate each other.



gdkdrawable-fb2.c: In function `_gdk_fb_draw_glyphs':
gdkdrawable-fb2.c:1188: `PangoFT2Subfont' undeclared (first use in this function)
gdkdrawable-fb2.c:1188: (Each undeclared identifier is reported only once
gdkdrawable-fb2.c:1188: for each function it appears in.)
gdkdrawable-fb2.c:1188: parse error before "subfont_index"
gdkdrawable-fb2.c:1214: warning: implicit declaration of function `PANGO_FT2_GLYPH_INDEX'
gdkdrawable-fb2.c:1215: `subfont_index' undeclared (first use in this function)
gdkdrawable-fb2.c:1215: warning: implicit declaration of function `PANGO_FT2_GLYPH_SUBFONT'
gdkdrawable-fb2.c:1216: warning: implicit declaration of function `pango_ft2_get_face'
gdkdrawable-fb2.c:1216: warning: assignment makes pointer from integer without a cast

pango-0.21 has them and pango cvs doesn't.

So I install 0.21 (forcing ./configure to use it) and forge ahead...

gdkproperty-fb.c: In function `gdk_atom_name':
gdkproperty-fb.c:75: pointers are not permitted as case values
gdkproperty-fb.c:76: pointers are not permitted as case values
gdkproperty-fb.c:77: pointers are not permitted as case values
gdkproperty-fb.c:78: pointers are not permitted as case values
gdkproperty-fb.c:79: pointers are not permitted as case values
gdkproperty-fb.c:80: pointers are not permitted as case values
gdkproperty-fb.c:81: pointers are not permitted as case values
gdkproperty-fb.c:82: pointers are not permitted as case values
gdkproperty-fb.c:83: pointers are not permitted as case values
gdkproperty-fb.c:84: pointers are not permitted as case values
gdkproperty-fb.c:85: pointers are not permitted as case values

Looks like a gcc incompatibility. I'm running gcc 3.0.x from cvs.

So I wrap all those constants in GPOINTER_TO_UINT() and forge ahead...

/me waits and waits for gtk to compile...
/me waits some more...
/me 's still waiting...

/.libs/libgtk-linux-fb-1.3.so: undefined reference to `gdk_window_show_unraised'

Hmm. What's this one... gdk/x11/ has that function but gdk/linux-fb/
doesn't. For now I'll just duplicate gdk_show_window() and leave out
the gdk_fb_window_raise (window); thing....

Woohoo, it built. However:

gtk+# gtk-demo

gtk-demo (pid:2947): Gdk-WARNING **: Can't open /dev/tty7: No such file or directory

gtk-demo (pid:2947): Gtk-WARNING **: cannot open display: /dev/fb0
gtk+#

Looks like it doesn't like devfs. If GDK_DISPLAY isn't set you
should try FRAMEBUFFER and also try "/dev/fb/0". (I forget what
other apps use FRAMEBUFFER, but it is an ad hoc standard by now..)

And "/dev/tty%d" should fall back to "/dev/vc/%d" similarly.

/me changes that one and rebuilds....

Ack, the mouse init fails for the same reason: "/dev/psaux" ->
"/dev/misc/psaux". Rebuild...

Blah, now it can't find any fonts. I'll try this:

http://mail.gnome.org/archives/gtk-i18n-list/2001-September/msg00008.html

/me sets up /etc/pango/{pangorc,...aliases}

Yay, a blue window shows up! Woot! (Even though it's dumping a whole
load of "Couldn't load font foo" messages...)

And the widgets basically work, too, but moving things introduces
nasty artifacts. In fact the highlighting colors are so strange, I'm
tempted to suspect that pixels aren't being written in BGR24 format,
but strangely the color selector widget and the animated widget look
perfect. So I'm stumped. Oh well....

Now it's time to build the gimp! /me compiles.. and compiles....

And it won't compile without pango 0.22... /me hacks...

/me waits.... and waits....

Woohoo, it starts, it configures its data files, and then it
segfaults after "loading documents". Hmm.. devices.c:259 "device" is
NULL. /me comments out that function... compile compile...

One problem fixed, more to go: toolbox.c:348, another null pointer
dereference. /me adds additional !list->data check.

Woot! I got the tip-of-the-day and the toolbar to come up. Dragging,
clicking, or selecting anything still makes weird artifacts though.

Uh-oh. When I make a new file I see a flood of "assertion device !=
NULL" messages and a segfault at gimpdisplayshell-callbacks.c:104.
There's obviously something more to this device==NULL bug. The
"device" pointer in all these instances is assigned from
gdk_devices_list(). Hmm, linux-fb/gdkinput.c:

GList *
gdk_devices_list (void)
{
  return _gdk_input_devices;
}

So why are there bogus entries in that? I can't even figure out
where anything is added to that list besides _gdk_core_pointer,
which seems guaranteed valid.

So I think this is where my journey ends for the moment. Oh, one
more thing: gdk/linux-fb doesn't know how to deal with virtual
framebuffer resolutions that are bigger than the visible res. And it
doesn't reset the terminal attributes correctly even on normal
exits. And changing themes doesn't resolve the weird
artifacts/corruption problem.



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]