Jan,
> First of all, you should get a backtrace to see which part of code
> causes that message. The message is going through function g_logv, so
> you can put a breakpoint on that and get a backtrace when it's hit.
Thanks for this tip, most useful.
It turns out that g_log was the procedure being used in this instance
(thanks to Ross for telling me off-list the set of possible breakpoints
for this problem). I got the following stack trace:
#0 0x40d10053 in g_log () from /usr/lib/libglib-2.0.so.0
#1 0x40bd1785 in g_type_register_static () from /usr/lib/libgobject-2.0.so.0
#2 0x40b3f673 in Glib::custom_pointer_type_register () from /usr/lib/libglibmm-2.4.so.1
#3 0x0805e3e0 in Glib::Value_Pointer<Pango::FontDescription, Pango::FontDescription*>::value_type_ ()
at typeinfo:88
#4 0x0805e150 in __static_initialization_and_destruction_0 (__initialize_p=1, __priority=65535)
at value_custom.h:207
#5 0x0805e22b in global constructors keyed to _ZN11FontBrowser21PresentationListStore12columnRecordE ()
at bind.h:1098
#6 0x0805fa35 in __do_global_ctors_aux ()
#7 0x08054891 in _init ()
#8 0x0805f96b in __libc_csu_init ()
#9 0x40e858b5 in __libc_start_main () from /lib/tls/libc.so.6
#10 0x08056081 in _start () at ../sysdeps/i386/elf/start.S:102
which proves that the declaration I was suspecting is indeed the
culprit. So that is good. However, it means that Glib::Value_Pointer
is trying to use the type system before it has been initiated. A strip
down version of the class declaration is:
class PresentationListStore : public Gtk::ListStore {
public :
// . . .
static class ColumnRecord : public Gtk::TreeModel::ColumnRecord {
public:
// . . .
Gtk::TreeModelColumn<Pango::FontDescription *> fontDescription ; // PROBLEM
ColumnRecord ( ) {
// . . .
add ( fontDescription ) ;
}
} columnRecord ;
// . . .
} ;
So the upshot of this is that it is not possible to use a
Pango::FontDescription * as a model column if there is static instance
of the column structure class. Although I have only been using GTKmm
for a couple of weeks or so, it strikes me as totally idiomatic that you
would want a static instance of the column structure since it is
effectively a singleton. I guess the only way round this is to have to
use a static method and dynamically allocate the object which is
irritating but I guess is the only way round this issue of correct
synchronization order?
--
Russel.
====================================================
Dr Russel Winder +44 20 7585 2200
41 Buckmaster Road +44 7770 465 077
London SW11 1EN, UK russel russel org uk
Attachment:
signature.asc
Description: This is a digitally signed message part