the GTK3 preview did not render properly, because it attempted to mimic the GTK2 code too closely - the function which draws to the gdk-pixbuf (the return value of the drawing functions), and its GDK2 counterpart which it replaced, did not have feature-parity - i tried to eliminate the cairo dependency; but i could not find a replacement GDK function which is equivalent to the GTK2-compatible one - some of the features of gdk-pixbuf2 appear to be incompatible with GTK3 the GTK2-compatible function...
the GTK3 preview did not render properly, because it attempted to mimic the GTK2 code too closely - the function which draws to the gdk-pixbuf (the return value of the drawing functions), and its GDK2 counterpart which it replaced, did not have feature-parity - i tried to eliminate the cairo dependency; but i could not find a replacement GDK function which is equivalent to the deprecated one - some of the features of gdk-pixbuf2 appear to be incompatible with GTK3 the GTK2-compatible function recycled...
the proper fix is included below i add this for the sake of completeness/documentation - if only this patch is applied, it would allow lxappearance to operate normally; but the functionality of preview.c is still broken using GTK3 (per https://sourceforge.net/p/lxde/bugs/768/) - i dont believe that the GTK3 implementation ever worked properly - i have re-worked and completed that feature, which would close #768; but my changes are under VCS, and i kept this patch separate for the sake of documentation...
i sent a patch to the mailing list which avoids the segfault https://sourceforge.net/p/lxde/mailman/lxde-list/thread/20201030001824.6817b566%40parabola/#msg37140205 backtrace of 'lxappearance': (gdb) run Starting program: /usr/bin/lxappearance [Thread debugging using libthread_db enabled] Using host libthread_db library "/usr/lib/libthread_db.so.1". [Detaching after fork from child process 26979] Program received signal SIGSEGV, Segmentation fault. 0x00007ffff6e4dfe0 in cairo_surface_get_content...
i sent a patch to the mailing list which avoids the segfult (on 2020-10-30) backtrace of 'lxappearance': (gdb) run Starting program: /usr/bin/lxappearance [Thread debugging using libthread_db enabled] Using host libthread_db library "/usr/lib/libthread_db.so.1". [Detaching after fork from child process 26979] Program received signal SIGSEGV, Segmentation fault. 0x00007ffff6e4dfe0 in cairo_surface_get_content () from /usr/lib/libcairo.so.2 (gdb) bt #0 0x00007ffff6e4dfe0 in cairo_surface_get_content...
stash3
update README.md
stash