aferrero2707 / PhotoFlow

A fully non-destructive photo retouching program providing a complete layer-based workflow including RAW image development.
http://aferrero2707.github.io/PhotoFlow
GNU General Public License v3.0
308 stars 36 forks source link

Display tears when image is larger than display viewer and scrollbars used. #8

Closed grosgood closed 9 years ago

grosgood commented 9 years ago

Built from: commit 1d7c20e8ece8a5a6f042a886ffc2e73cd5502c2b Author: Ferrero Andrea aferrero1975@gmail.com Date: Thu Nov 6 14:32:10 2014 +0100 Platform details: Hardware: Dell Optiplex GX620 Minitower Display controller: Intel Corporation 82945G/GZ Integrated Graphics Controller (rev 02) uname: Linux harriet 3.14.14-gentoo #1 SMP Sun Aug 10 19:53:42 EDT 2014 x86_64 Intel(R) Pentium(R) 4 CPU 2.80GHz GenuineIntel GNU/Linux Kernel module: i915 Display driver: intel X11 Server: X.Org X Server 1.15.0 build configuration output: bash build.sh rm: cannot remove ‘CMakeCache.txt’: No such file or directory -- The C compiler identification is GNU 4.8.3 -- The CXX compiler identification is GNU 4.8.3 -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++ -- Check for working CXX compiler: /usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Found PkgConfig: /usr/bin/pkg-config (found version "0.28") -- Check for LCMS2 availability... -- checking for module 'lcms2' -- found lcms2, version 2.6 -- Found TIFF: /usr/lib64/libtiff.so (found version "4.0.3") -- Found ZLIB: /usr/lib64/libz.so (found version "1.2.8") -- checking for module 'fftw3>=3.0' -- found fftw3, version 3.3.3 -- checking for module 'sigc++-2.0' -- found sigc++-2.0, version 2.3.1 -- checking for module 'vips>=7.40.11' -- found vips, version 7.42.0 -- VIPS_INCLUDE_DIRS: /usr/local/include/usr/include/libxml2/usr/include/ImageMagick-6/usr/include/orc-0.4/usr/include/OpenEXR/usr/include/pango-1.0/usr/include/harfbuzz/usr/include/pango-1.0/usr/include/glib-2.0/usr/lib64/glib-2.0/include/usr/include/freetype2/usr/include/libpng16/usr/include/libexif -- VIPS_LIBRARY_DIRS: /usr/local/lib -- checking for module 'gtkmm-3.0' -- found gtkmm-3.0, version 3.12.0 -- Configuring done -- Generating done -- Build files have been written to: /home/gosgood/PhotoFlow/build ldd output: gosgood@harriet ~/PhotoFlow/build/Debug/bin $ ldd photoflow linux-vdso.so.1 (0x00007fff6ebff000) libsigc-2.0.so.0 => /usr/lib64/libsigc-2.0.so.0 (0x00007ff507570000) libgtkmm-3.0.so.1 => /usr/lib64/libgtkmm-3.0.so.1 (0x00007ff506cc1000) libatkmm-1.6.so.1 => /usr/lib64/libatkmm-1.6.so.1 (0x00007ff506a75000) libgdkmm-3.0.so.1 => /usr/lib64/libgdkmm-3.0.so.1 (0x00007ff5067ff000) libgiomm-2.4.so.1 => /usr/lib64/libgiomm-2.4.so.1 (0x00007ff50646d000) libpangomm-1.4.so.1 => /usr/lib64/libpangomm-1.4.so.1 (0x00007ff506240000) libglibmm-2.4.so.1 => /usr/lib64/libglibmm-2.4.so.1 (0x00007ff505fcd000) libgtk-3.so.0 => /usr/lib64/libgtk-3.so.0 (0x00007ff505939000) libgdk-3.so.0 => /usr/lib64/libgdk-3.so.0 (0x00007ff5056a9000) libpangocairo-1.0.so.0 => /usr/lib64/libpangocairo-1.0.so.0 (0x00007ff50549c000) libpango-1.0.so.0 => /usr/lib64/libpango-1.0.so.0 (0x00007ff505252000) libatk-1.0.so.0 => /usr/lib64/libatk-1.0.so.0 (0x00007ff50502c000) libcairo-gobject.so.2 => /usr/lib64/libcairo-gobject.so.2 (0x00007ff504e23000) libgio-2.0.so.0 => /usr/lib64/libgio-2.0.so.0 (0x00007ff504abf000) libcairomm-1.0.so.1 => /usr/lib64/libcairomm-1.0.so.1 (0x00007ff504899000) libcairo.so.2 => /usr/lib64/libcairo.so.2 (0x00007ff50458c000) libgdk_pixbuf-2.0.so.0 => /usr/lib64/libgdk_pixbuf-2.0.so.0 (0x00007ff50436b000) libgobject-2.0.so.0 => /usr/lib64/libgobject-2.0.so.0 (0x00007ff50411c000) libglib-2.0.so.0 => /usr/lib64/libglib-2.0.so.0 (0x00007ff503df2000) libtiff.so.5 => /usr/lib64/libtiff.so.5 (0x00007ff503b82000) liblcms2.so.2 => /usr/lib64/liblcms2.so.2 (0x00007ff50392c000) libvips.so.38 => /usr/local/lib64/libvips.so.38 (0x00007ff503310000) libMagickWand-6.Q32HDRI.so.2 => /usr/lib64/libMagickWand-6.Q32HDRI.so.2 (0x00007ff502ff0000) libMagickCore-6.Q32HDRI.so.2 => /usr/lib64/libMagickCore-6.Q32HDRI.so.2 (0x00007ff502b59000) libpng16.so.16 => /usr/lib64/libpng16.so.16 (0x00007ff502926000) libz.so.1 => /lib64/libz.so.1 (0x00007ff502710000) libjpeg.so.62 => /usr/lib64/libjpeg.so.62 (0x00007ff5024bb000) libgmodule-2.0.so.0 => /usr/lib64/libgmodule-2.0.so.0 (0x00007ff5022b7000) libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x00007ff501f66000) libpangoft2-1.0.so.0 => /usr/lib64/libpangoft2-1.0.so.0 (0x00007ff501d52000) libfreetype.so.6 => /usr/lib64/libfreetype.so.6 (0x00007ff501ab0000) libfontconfig.so.1 => /usr/lib64/libfontconfig.so.1 (0x00007ff501876000) libfftw3.so.3 => /usr/lib64/libfftw3.so.3 (0x00007ff5014fb000) liborc-0.4.so.0 => /usr/lib64/liborc-0.4.so.0 (0x00007ff50127d000) libIlmImf.so.6 => /usr/lib64/libIlmImf.so.6 (0x00007ff500fb8000) libImath.so.6 => /usr/lib64/libImath.so.6 (0x00007ff500db1000) libHalf.so.6 => /usr/lib64/libHalf.so.6 (0x00007ff500b6e000) libIex.so.6 => /usr/lib64/libIex.so.6 (0x00007ff50094d000) libIlmThread.so.6 => /usr/lib64/libIlmThread.so.6 (0x00007ff500746000) libcfitsio.so.3 => /usr/lib64/libcfitsio.so.3 (0x00007ff50038f000) libm.so.6 => /lib64/libm.so.6 (0x00007ff500090000) libwebp.so.5 => /usr/lib64/libwebp.so.5 (0x00007ff4ffe34000) libexif.so.12 => /usr/lib64/libexif.so.12 (0x00007ff4ffbef000) libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/libstdc++.so.6 (0x00007ff4ff8ed000) libfftw3_threads.so.3 => /usr/lib64/libfftw3_threads.so.3 (0x00007ff4ff6e6000) libgcc_s.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/libgcc_s.so.1 (0x00007ff4ff4d0000) libc.so.6 => /lib64/libc.so.6 (0x00007ff4ff133000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ff4fef15000) libX11.so.6 => /usr/lib64/libX11.so.6 (0x00007ff4febe1000) libXi.so.6 => /usr/lib64/libXi.so.6 (0x00007ff4fe9d1000) libXfixes.so.3 => /usr/lib64/libXfixes.so.3 (0x00007ff4fe7cb000) libatk-bridge-2.0.so.0 => /usr/lib64/libatk-bridge-2.0.so.0 (0x00007ff4fe59e000) libXrandr.so.2 => /usr/lib64/libXrandr.so.2 (0x00007ff4fe394000) libXcursor.so.1 => /usr/lib64/libXcursor.so.1 (0x00007ff4fe189000) libXcomposite.so.1 => /usr/lib64/libXcomposite.so.1 (0x00007ff4fdf86000) libXdamage.so.1 => /usr/lib64/libXdamage.so.1 (0x00007ff4fdd83000) libXext.so.6 => /usr/lib64/libXext.so.6 (0x00007ff4fdb71000) libresolv.so.2 => /lib64/libresolv.so.2 (0x00007ff4fd95a000) libpixman-1.so.0 => /usr/lib64/libpixman-1.so.0 (0x00007ff4fd6c2000) libEGL.so.1 => /usr/lib64/libEGL.so.1 (0x00007ff4fd4a4000) libdl.so.2 => /lib64/libdl.so.2 (0x00007ff4fd2a0000) libxcb-shm.so.0 => /usr/lib64/libxcb-shm.so.0 (0x00007ff4fd09d000) libxcb-render.so.0 => /usr/lib64/libxcb-render.so.0 (0x00007ff4fce93000) libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x00007ff4fcc73000) libXrender.so.1 => /usr/lib64/libXrender.so.1 (0x00007ff4fca69000) libGL.so.1 => /usr/lib64/libGL.so.1 (0x00007ff4fc80a000) librt.so.1 => /lib64/librt.so.1 (0x00007ff4fc602000) libffi.so.6 => /usr/lib64/libffi.so.6 (0x00007ff4fc3fa000) libgomp.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/libgomp.so.1 (0x00007ff4fc1ec000) liblqr-1.so.0 => /usr/lib64/liblqr-1.so.0 (0x00007ff4fbfdd000) libbz2.so.1 => /lib64/libbz2.so.1 (0x00007ff4fbdcd000) libltdl.so.7 => /usr/lib64/libltdl.so.7 (0x00007ff4fbbc3000) libharfbuzz.so.0 => /usr/lib64/libharfbuzz.so.0 (0x00007ff4fb969000) libexpat.so.1 => /usr/lib64/libexpat.so.1 (0x00007ff4fb73f000) /lib64/ld-linux-x86-64.so.2 (0x00007ff507776000) libatspi.so.0 => /usr/lib64/libatspi.so.0 (0x00007ff4fb510000) libdbus-1.so.3 => /usr/lib64/libdbus-1.so.3 (0x00007ff4fb2d6000) libX11-xcb.so.1 => /usr/lib64/libX11-xcb.so.1 (0x00007ff4fb0d4000) libxcb-dri2.so.0 => /usr/lib64/libxcb-dri2.so.0 (0x00007ff4faecf000) libxcb-xfixes.so.0 => /usr/lib64/libxcb-xfixes.so.0 (0x00007ff4facc8000) libgbm.so.1 => /usr/lib64/libgbm.so.1 (0x00007ff4faac2000) libudev.so.1 => /lib64/libudev.so.1 (0x00007ff4fa8b0000) libdrm.so.2 => /usr/lib64/libdrm.so.2 (0x00007ff4fa6a4000) libXau.so.6 => /usr/lib64/libXau.so.6 (0x00007ff4fa4a0000) libXdmcp.so.6 => /usr/lib64/libXdmcp.so.6 (0x00007ff4fa29a000) libglapi.so.0 => /usr/lib64/libglapi.so.0 (0x00007ff4fa073000) libxcb-glx.so.0 => /usr/lib64/libxcb-glx.so.0 (0x00007ff4f9e5a000) libXxf86vm.so.1 => /usr/lib64/libXxf86vm.so.1 (0x00007ff4f9c54000) libgraphite2.so.3 => /usr/lib64/libgraphite2.so.3 (0x00007ff4f9a36000) Documentation at: https://backup.filesanywhere.com/fs/v.aspx?v=8c72658c5a6271b5a4ac (link is good for 60 days. Will expire 05-January-2015 @ 15:35 EST (UTC-5)) Documentation synopsis:

  1. Video: tearingdemo.mp4 (3 min, 17 sec) shows effects of using scrollbars with an oversized image on this particular hardware platform and this particular build.
  2. photoflowlogs - zipped text file of standard output to shell while program was running
  3. brisbrane_nsw.jpg - image used while demonstrating bug.
aferrero2707 commented 9 years ago

Thanks for the detailed report. The display problem seems really odd, I've never observed something like that... are you running under XFCE? Would you have the possibility to check if the problem persists under Unity or Cinnamon (I'm personally using cinnamon on my system...).

Concerning the x_paint filter, I honestly do not know it, but what you observe is clearly a problem of badly returned pixel data. Probably this filter needs some specific code in order to work properly. I'll look into that.

grosgood commented 9 years ago

Yep - XFCE is the desktop. I have a couple of Fedora boxes that have different graphics configurations and are running Gnome3 - no Ubuntu/Unity/Cinnamon environments at the moment, but maybe that is just as well. You'd like to see how it runs in different environments. I can build Photoflow out on those and see what happens.

x_paint - see my remarks on issue #9 where I raise the question on whether you want to support a facility that more-or-less lets people write arbitrary G'MIC code as a layer filter. I'm not sure what use case would be served among photographers. Don't get me wrong, I love hacking G'MIC in a command shell. But would a photographer want to do that in PhotoFlow? I'd reach out to Patrick David, who created the datasets for those filters and is a photographer. Ask him if the use case makes sense. I can't imagine him hacking G'MIC code to get a job done. He'd haunt David T. (or perhaps Garagecoder or me) to write a G'MIC filter that would do the job he imagines needs to be done. That, I understand, is how the framework for the film presets came about.

Good luck with this project. It's going to be fun to see how this one evolves.

Take care,

Garry

On 2014-11-06 14:32, aferrero2707 wrote:

Thanks for the detailed report. The display problem seems really odd, I've never observed something like that... are you running under XFCE? Would you have the possibility to check if the problem persists under Unity or Cinnamon (I'm personally using cinnamon on my system...).

Concerning the x_paint filter, I honestly do not know it, but what you observe is clearly a problem of badly returned pixel data. Probably this filter needs some specific code in order to work properly. I'll look into that.

Reply to this email directly or view it on GitHub [1].

Links:

[1] https://github.com/aferrero2707/PhotoFlow/issues/8#issuecomment-62055111

aferrero2707 commented 9 years ago

I will laso try on XFCE myself, to see if your problem is reproducible.

Concerning the generic G'MIC interface, I agree that is can be a big source of "troubles", therefore I've removed it from the development branch (or actually just removed the gui element that allows to access it, as internally it is used by all other G'MIC filters). It is still available in the gmic-integration branch as an handy tool for experts to quickly check how a given g'mic filter behaves in photoflow.

I'll comment more about the tearing issue if I manage to reproduce the problem and dig into it...

aferrero2707 commented 9 years ago

I'm testing under XFCE4 at the moment, and all works ok for me... I've also tried to enable and disable compositing, but it has no effect.

However, my system is still quite old: I've XFCE 4.8 and gtkmm 3.4.0 installed, while I see you have gtkmm 3.12.0. I'll try to do some tests on an up-to-date box.

aferrero2707 commented 9 years ago

I can confirm the issue on a recent Linux system. It might be related to the gtk(mm) version.

I'm investigating with high priority, as it might affect lots of users.

grosgood commented 9 years ago

Hi - Built it out against GTKmm 2.4 and the problem went away. Starting to feel like the issue may be more of a GTK3mm one than your code. In particular, whether or not GTK3 in general plays nice with older Intel chipsets. I'm thinking its time to scrounge around the GTK bug repository and see if anything there rings the bell.

Following is the configuration probing, PhotoFlow/CMakeLists.txt that I hacked to build against 2.4, (for reference), the ldd dump of what I'm linking against.

Build Probe: -- Found PkgConfig: /usr/bin/pkg-config (found version "0.28") -- Check for LCMS2 availability... -- checking for module 'lcms2' -- found lcms2, version 2.6 -- Found TIFF: /usr/lib64/libtiff.so (found version "4.0.3") -- Found ZLIB: /usr/lib64/libz.so (found version "1.2.8") -- checking for module 'fftw3>=3.0' -- found fftw3, version 3.3.3 -- checking for module 'sigc++-2.0' -- found sigc++-2.0, version 2.3.1 -- checking for module 'vips>=7.40.11' -- found vips, version 7.42.0 -- VIPS_INCLUDE_DIRS: /usr/local/include/usr/include/libxml2/usr/include/ImageMagick-6/usr/include/orc-0.4/usr/include/OpenEXR/usr/include/pango-1.0/usr/include/harfbuzz/usr/include/pango-1.0/usr/include/glib-2.0/usr/lib64/glib-2.0/include/usr/include/freetype2/usr/include/libpng16/usr/include/libexif -- VIPS_LIBRARY_DIRS: /usr/local/lib -- checking for module 'gtkmm-2.4' -- found gtkmm-2.4, version 2.24.4 -- GTKMM2_INCLUDE_DIRS: /usr/include/gtkmm-2.4/usr/lib64/gtkmm-2.4/include/usr/include/atkmm-1.6/usr/include/gtk-unix-print-2.0/usr/include/gtk-2.0/usr/include/gdkmm-2.4/usr/lib64/gdkmm-2.4/include/usr/include/giomm-2.4/usr/lib64/giomm-2.4/include/usr/include/pangomm-1.4/usr/lib64/pangomm-1.4/include/usr/include/glibmm-2.4/usr/lib64/glibmm-2.4/include/usr/include/cairomm-1.0/usr/lib64/cairomm-1.0/include/usr/include/sigc++-2.0/usr/lib64/sigc++-2.0/include/usr/include/gtk-2.0/usr/lib64/gtk-2.0/include/usr/include/pango-1.0/usr/include/atk-1.0/usr/include/cairo/usr/include/pixman-1/usr/include/libdrm/usr/include/gdk-pixbuf-2.0/usr/include/libpng16/usr/include/pango-1.0/usr/include/harfbuzz/usr/include/pango-1.0/usr/include/glib-2.0/usr/lib64/glib-2.0/include/usr/include/freetype2 -- GTKMM2_LIBRARY_DIRS:
-- Configuring done

-- Generating done

Hacked PhotoFlow/CMakeLists.txt: cmake_minimum_required(VERSION 2.8)

project(photoflow)

find_package(PkgConfig)

MESSAGE(STATUS "Check for LCMS2 availability...")

FIND_PACKAGE(LCMS2)

pkg_check_modules(LCMS2 REQUIRED lcms2)

find_package (TIFF REQUIRED)

find_package (ZLIB REQUIRED)

pkg_check_modules(FFTW3 REQUIRED fftw3>=3.0)

FIND_PACKAGE(LibRaw 0.13 REQUIRED)

pkg_check_modules(LIBRAW REQUIRED libraw)

find_package (LibXML++ REQUIRED)

pkg_check_modules(LIBXML REQUIRED libxml++-2.6)

pkg_check_modules(SIGC2 REQUIRED sigc++-2.0)

pkg_check_modules(VIPS REQUIRED vips>=7.40.11)

pkg_check_modules(VIPSCC REQUIRED vipsCC)

MESSAGE( STATUS "VIPS_INCLUDE_DIRS: " ${VIPS_INCLUDE_DIRS} ) MESSAGE( STATUS "VIPS_LIBRARY_DIRS: " ${VIPS_LIBRARY_DIRS} )

pkg_check_modules(GTKMM3 gtkmm-3.0)

if(NOT GTKMM3_FOUND)

pkg_check_modules(GTKMM2 REQUIRED gtkmm-2.4) MESSAGE( STATUS "GTKMM2_INCLUDE_DIRS: " ${GTKMM2_INCLUDE_DIRS} ) MESSAGE( STATUS "GTKMM2_LIBRARY_DIRS: " ${GTKMM2_LIBRARY_DIRS} )

add_subdirectory(src)

ldd dump: linux-vdso.so.1 (0x00007fff349ff000) libsigc-2.0.so.0 => /usr/lib64/libsigc-2.0.so.0 (0x00007ffcc7376000) libgtkmm-2.4.so.1 => /usr/lib64/libgtkmm-2.4.so.1 (0x00007ffcc6d0f000) libatkmm-1.6.so.1 => /usr/lib64/libatkmm-1.6.so.1 (0x00007ffcc6ac3000) libgtk-x11-2.0.so.0 => /usr/lib64/libgtk-x11-2.0.so.0 (0x00007ffcc64b1000) libgdkmm-2.4.so.1 => /usr/lib64/libgdkmm-2.4.so.1 (0x00007ffcc6262000) libgiomm-2.4.so.1 => /usr/lib64/libgiomm-2.4.so.1 (0x00007ffcc5ed0000) libpangomm-1.4.so.1 => /usr/lib64/libpangomm-1.4.so.1 (0x00007ffcc5ca3000) libglibmm-2.4.so.1 => /usr/lib64/libglibmm-2.4.so.1 (0x00007ffcc5a30000) libcairomm-1.0.so.1 => /usr/lib64/libcairomm-1.0.so.1 (0x00007ffcc580a000) libgdk-x11-2.0.so.0 => /usr/lib64/libgdk-x11-2.0.so.0 (0x00007ffcc555c000) libpangocairo-1.0.so.0 => /usr/lib64/libpangocairo-1.0.so.0 (0x00007ffcc534f000) libatk-1.0.so.0 => /usr/lib64/libatk-1.0.so.0 (0x00007ffcc5129000) libcairo.so.2 => /usr/lib64/libcairo.so.2 (0x00007ffcc4e1c000) libgdk_pixbuf-2.0.so.0 => /usr/lib64/libgdk_pixbuf-2.0.so.0 (0x00007ffcc4bfb000) libgio-2.0.so.0 => /usr/lib64/libgio-2.0.so.0 (0x00007ffcc4897000) libpangoft2-1.0.so.0 => /usr/lib64/libpangoft2-1.0.so.0 (0x00007ffcc4683000) libpango-1.0.so.0 => /usr/lib64/libpango-1.0.so.0 (0x00007ffcc4439000) libgobject-2.0.so.0 => /usr/lib64/libgobject-2.0.so.0 (0x00007ffcc41ea000) libglib-2.0.so.0 => /usr/lib64/libglib-2.0.so.0 (0x00007ffcc3ec0000) libfreetype.so.6 => /usr/lib64/libfreetype.so.6 (0x00007ffcc3c1e000) libfontconfig.so.1 => /usr/lib64/libfontconfig.so.1 (0x00007ffcc39e4000) libtiff.so.5 => /usr/lib64/libtiff.so.5 (0x00007ffcc3774000) liblcms2.so.2 => /usr/lib64/liblcms2.so.2 (0x00007ffcc351e000) libvips.so.38 => /usr/local/lib64/libvips.so.38 (0x00007ffcc2f02000) libMagickWand-6.Q32HDRI.so.2 => /usr/lib64/libMagickWand-6.Q32HDRI.so.2 (0x00007ffcc2be2000) libMagickCore-6.Q32HDRI.so.2 => /usr/lib64/libMagickCore-6.Q32HDRI.so.2 (0x00007ffcc274b000) libpng16.so.16 => /usr/lib64/libpng16.so.16 (0x00007ffcc2518000) libz.so.1 => /lib64/libz.so.1 (0x00007ffcc2302000) libjpeg.so.62 => /usr/lib64/libjpeg.so.62 (0x00007ffcc20ad000) libgmodule-2.0.so.0 => /usr/lib64/libgmodule-2.0.so.0 (0x00007ffcc1ea9000) libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x00007ffcc1b58000) libfftw3.so.3 => /usr/lib64/libfftw3.so.3 (0x00007ffcc17dd000) liborc-0.4.so.0 => /usr/lib64/liborc-0.4.so.0 (0x00007ffcc155f000) libIlmImf.so.6 => /usr/lib64/libIlmImf.so.6 (0x00007ffcc129a000) libImath.so.6 => /usr/lib64/libImath.so.6 (0x00007ffcc1093000) libHalf.so.6 => /usr/lib64/libHalf.so.6 (0x00007ffcc0e50000) libIex.so.6 => /usr/lib64/libIex.so.6 (0x00007ffcc0c2f000) libIlmThread.so.6 => /usr/lib64/libIlmThread.so.6 (0x00007ffcc0a28000) libcfitsio.so.3 => /usr/lib64/libcfitsio.so.3 (0x00007ffcc0671000) libm.so.6 => /lib64/libm.so.6 (0x00007ffcc0372000) libwebp.so.5 => /usr/lib64/libwebp.so.5 (0x00007ffcc0116000) libexif.so.12 => /usr/lib64/libexif.so.12 (0x00007ffcbfed1000) libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/libstdc++.so.6 (0x00007ffcbfbcf000) libfftw3_threads.so.3 => /usr/lib64/libfftw3_threads.so.3 (0x00007ffcbf9c8000) libgcc_s.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/libgcc_s.so.1 (0x00007ffcbf7b2000) libc.so.6 => /lib64/libc.so.6 (0x00007ffcbf415000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ffcbf1f7000) libX11.so.6 => /usr/lib64/libX11.so.6 (0x00007ffcbeec3000) libXfixes.so.3 => /usr/lib64/libXfixes.so.3 (0x00007ffcbecbd000) libXrender.so.1 => /usr/lib64/libXrender.so.1 (0x00007ffcbeab3000) libXi.so.6 => /usr/lib64/libXi.so.6 (0x00007ffcbe8a3000) libXrandr.so.2 => /usr/lib64/libXrandr.so.2 (0x00007ffcbe699000) libXcursor.so.1 => /usr/lib64/libXcursor.so.1 (0x00007ffcbe48e000) libXcomposite.so.1 => /usr/lib64/libXcomposite.so.1 (0x00007ffcbe28b000) libXdamage.so.1 => /usr/lib64/libXdamage.so.1 (0x00007ffcbe088000) libXext.so.6 => /usr/lib64/libXext.so.6 (0x00007ffcbde76000) libpixman-1.so.0 => /usr/lib64/libpixman-1.so.0 (0x00007ffcbdbde000) libEGL.so.1 => /usr/lib64/libEGL.so.1 (0x00007ffcbd9c0000) libdl.so.2 => /lib64/libdl.so.2 (0x00007ffcbd7bc000) libxcb-shm.so.0 => /usr/lib64/libxcb-shm.so.0 (0x00007ffcbd5b9000) libxcb-render.so.0 => /usr/lib64/libxcb-render.so.0 (0x00007ffcbd3af000) libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x00007ffcbd18f000) libGL.so.1 => /usr/lib64/libGL.so.1 (0x00007ffcbcf30000) librt.so.1 => /lib64/librt.so.1 (0x00007ffcbcd28000) libresolv.so.2 => /lib64/libresolv.so.2 (0x00007ffcbcb11000) libharfbuzz.so.0 => /usr/lib64/libharfbuzz.so.0 (0x00007ffcbc8b7000) libffi.so.6 => /usr/lib64/libffi.so.6 (0x00007ffcbc6af000) libbz2.so.1 => /lib64/libbz2.so.1 (0x00007ffcbc49f000) libexpat.so.1 => /usr/lib64/libexpat.so.1 (0x00007ffcbc275000) libgomp.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/libgomp.so.1 (0x00007ffcbc067000) liblqr-1.so.0 => /usr/lib64/liblqr-1.so.0 (0x00007ffcbbe58000) libltdl.so.7 => /usr/lib64/libltdl.so.7 (0x00007ffcbbc4e000) /lib64/ld-linux-x86-64.so.2 (0x00007ffcc757c000) libX11-xcb.so.1 => /usr/lib64/libX11-xcb.so.1 (0x00007ffcbba4c000) libxcb-dri2.so.0 => /usr/lib64/libxcb-dri2.so.0 (0x00007ffcbb847000) libxcb-xfixes.so.0 => /usr/lib64/libxcb-xfixes.so.0 (0x00007ffcbb640000) libgbm.so.1 => /usr/lib64/libgbm.so.1 (0x00007ffcbb43a000) libudev.so.1 => /lib64/libudev.so.1 (0x00007ffcbb228000) libdrm.so.2 => /usr/lib64/libdrm.so.2 (0x00007ffcbb01c000) libXau.so.6 => /usr/lib64/libXau.so.6 (0x00007ffcbae18000) libXdmcp.so.6 => /usr/lib64/libXdmcp.so.6 (0x00007ffcbac12000) libglapi.so.0 => /usr/lib64/libglapi.so.0 (0x00007ffcba9eb000) libxcb-glx.so.0 => /usr/lib64/libxcb-glx.so.0 (0x00007ffcba7d2000) libXxf86vm.so.1 => /usr/lib64/libXxf86vm.so.1 (0x00007ffcba5cc000)

libgraphite2.so.3 => /usr/lib64/libgraphite2.so.3 (0x00007ffcba3ae000)

It's actually quite nice to play with now that the main Canvas isn't tearing up. -x_paint still rips the display, though, so it is probably good that you locked away the G'MIC toys. Still planning to build out with GTK3mm on other hardware just to see how specific this may be. Will keep you posted here. Garry

aferrero2707 commented 9 years ago

Very nice! I had also the ide to suggest compiling agains gtkmm-2.4, but I wasn't sure you had it still available on your system... actually, in the CMakeLists.txt file it is enough to comment the line

pkg_check_modules(GTKMM3 gtkmm-3.0)

Then, GTKMM3_FOUND will not be set and the build system will revert to gtkmm-2.4.

Welcome to the photoflow world! I suggest you to have a look at some of the tutorials I've on my blog (for example, the one explaining how to use the curves tool and the one about luminosity masks could be good starting points)... apart from the fact that they are surely much more boring than your amazing G'MIC tutorials, they should give you a reasonable overview of what can be done with the present code.

It's a good idea to look into the gtkmm bug reports, I have some suspects on either Gdk::Cairo::set_source_pixbuf() or the pixbuf code itself. However, what I find strange is that even the scrollbars disappear from time to time...

Do you get chrashes due to that? In that case, running the program under gdb and posting a backtrace of the crash might be of help...

grosgood commented 9 years ago

No crashes under GTK 2.4. I did have SIGSEGV's eventually under GTK3 & can rebuild under that and hook gdb into it. Stay tuned. Time to walk my fierce Corgi girl, who sets priorities around here. G.

aferrero2707 commented 9 years ago

Have a nice walk!

aferrero2707 commented 9 years ago

I've been able to compile and install gtkmm-3.10.0 on my system, and now I get the same problems as you have... now I can try to pin down the problem.

aferrero2707 commented 9 years ago

I give up for the moment... either I'm doing some strange mistake or gtkmm behaviour is somehow broken in recent versions. I'll prepare a showcase an file a bug to the gtkmm developers.

Meanwhile, I've modified the build system so that it reverts to gtkmm-2.4 if the gtkmm-3.0 version is too recent, just to make sure that the program is usable.

aferrero2707 commented 9 years ago

I have finally found and fixed the tearing and misbehavior with recent GTK 3.x libraries, so I think we can now close this issue.

The present git develop branch should compile and run correctly in any GTK 2.x or GTK 3.x environment.

The problem was more on my side than GTK one, specifically I was using window->create_cairo_context() to draw the image, instead of using the context directly provided by the on_draw() callback. This worked with earlier versions of GTK but not with more recent ones. I do not know if that's a kind of bug in GTK, however "doing things the right way" just works, so I'm not planning to dig that further.