Branch: refs/heads/master
  Home:   https://github.com/synfig/synfig
  Commit: 2515be25e158787d45b96ae252720f631b54364e
      
https://github.com/synfig/synfig/commit/2515be25e158787d45b96ae252720f631b54364e
  Author: Rodolfo Ribeiro Gomes <rodolf...@gmail.com>
  Date:   2020-06-07 (Sun, 07 Jun 2020)

  Changed paths:
    M synfig-studio/src/gui/canvasview.cpp
    M synfig-studio/src/gui/cellrenderer/cellrenderer_time.cpp
    M synfig-studio/src/gui/cellrenderer/cellrenderer_timetrack.cpp
    M synfig-studio/src/gui/cellrenderer/cellrenderer_timetrack.h
    M synfig-studio/src/gui/cellrenderer/cellrenderer_value.cpp
    M synfig-studio/src/gui/cellrenderer/cellrenderer_value.h
    M synfig-studio/src/gui/dialogs/dialog_preview.cpp
    M synfig-studio/src/gui/dials/zoomdial.cpp
    M synfig-studio/src/gui/docks/dock_history.cpp
    M synfig-studio/src/gui/docks/dock_history.h
    M synfig-studio/src/gui/docks/dock_layers.cpp
    M synfig-studio/src/gui/docks/dock_navigator.cpp
    M synfig-studio/src/gui/docks/dock_timetrack.cpp
    M synfig-studio/src/gui/docks/dockbook.cpp
    M synfig-studio/src/gui/docks/dockbook.h
    M synfig-studio/src/gui/docks/dockdialog.cpp
    A synfig-studio/src/gui/exception_guard.h
    M synfig-studio/src/gui/main.cpp
    M synfig-studio/src/gui/mainwindow.cpp
    M synfig-studio/src/gui/preview.cpp
    M synfig-studio/src/gui/selectdraghelper.h
    M synfig-studio/src/gui/states/state_mirror.cpp
    M synfig-studio/src/gui/trees/childrentree.cpp
    M synfig-studio/src/gui/trees/keyframetree.cpp
    M synfig-studio/src/gui/trees/keyframetree.h
    M synfig-studio/src/gui/trees/layergrouptree.cpp
    M synfig-studio/src/gui/trees/layergrouptree.h
    M synfig-studio/src/gui/trees/layertree.cpp
    M synfig-studio/src/gui/trees/layertree.h
    M synfig-studio/src/gui/widgets/widget_canvastimeslider.cpp
    M synfig-studio/src/gui/widgets/widget_color.cpp
    M synfig-studio/src/gui/widgets/widget_coloredit.cpp
    M synfig-studio/src/gui/widgets/widget_coloredit.h
    M synfig-studio/src/gui/widgets/widget_curves.cpp
    M synfig-studio/src/gui/widgets/widget_defaults.cpp
    M synfig-studio/src/gui/widgets/widget_distance.cpp
    M synfig-studio/src/gui/widgets/widget_distance.h
    M synfig-studio/src/gui/widgets/widget_gradient.cpp
    M synfig-studio/src/gui/widgets/widget_gradient.h
    M synfig-studio/src/gui/widgets/widget_keyframe_list.cpp
    M synfig-studio/src/gui/widgets/widget_keyframe_list.h
    M synfig-studio/src/gui/widgets/widget_soundwave.cpp
    M synfig-studio/src/gui/widgets/widget_time.cpp
    M synfig-studio/src/gui/widgets/widget_timeslider.cpp
    M synfig-studio/src/gui/widgets/widget_timetrack.cpp
    M synfig-studio/src/gui/workarea.cpp
    M synfig-studio/src/gui/workarearenderer/renderer_dragbox.cpp
    M synfig-studio/src/gui/workarearenderer/renderer_dragbox.h
    M synfig-studio/src/gui/workarearenderer/renderer_guides.h

  Log Message:
  -----------
  try to catch all exceptions thrown in GTK event callback handlers

This huge commit was made based on the discovery of the error reported
by Svarov-RZM in Github issue comment 
https://github.com/synfig/synfig/issues/1442#issuecomment-633446649

After some investigation (reported in 
https://github.com/synfig/synfig/issues/1442#issuecomment-633718069 ), the 
problem is some GTK callback events call some synfigapp actions that may throw 
exceptions to report
errors that would never be caught except by the main App class and main()
standard function. So, in an user perspective: Synfig Studio crashes.

For this reason, I surrounded all callback contents (60) with a try-catch
statement.

This commit avoids the crash, prints the error (or tries to) and make the
callback return the failure (if the callback can do it), propagating the error 
without a sudden close of the software.

I also renamed one to follow the convention used by the rest of the code:
onKeyPressed() -> on_key_pressed_event().

Besides, I ensure every callback to be private or protected:
there's no reason to they be public.

Finally, I checked if the callbacks methods were being called by other methods 
that were not signal calls. Only Workarea::on_drawing_area_event()
is used that way, but inside the same class in the methods: on_hruler_event() 
and on_vruler_event(). So I think it's safe, because
I made them look to the return value and handle it.


  Commit: 27f38ad306a91a41b8e121f220a27fe461d1adec
      
https://github.com/synfig/synfig/commit/27f38ad306a91a41b8e121f220a27fe461d1adec
  Author: Rodolfo Ribeiro Gomes <rodolf...@gmail.com>
  Date:   2020-06-07 (Sun, 07 Jun 2020)

  Changed paths:
    M synfig-studio/src/gui/exception_guard.h

  Log Message:
  -----------
  Let Windows print useful function name


  Commit: 27cd14ea7a25dbf9e3226d3f357afd8404a349a8
      
https://github.com/synfig/synfig/commit/27cd14ea7a25dbf9e3226d3f357afd8404a349a8
  Author: ice0 <konop...@gmail.com>
  Date:   2020-06-08 (Mon, 08 Jun 2020)

  Changed paths:
    M synfig-studio/src/gui/canvasview.cpp
    M synfig-studio/src/gui/cellrenderer/cellrenderer_time.cpp
    M synfig-studio/src/gui/cellrenderer/cellrenderer_timetrack.cpp
    M synfig-studio/src/gui/cellrenderer/cellrenderer_timetrack.h
    M synfig-studio/src/gui/cellrenderer/cellrenderer_value.cpp
    M synfig-studio/src/gui/cellrenderer/cellrenderer_value.h
    M synfig-studio/src/gui/dialogs/dialog_preview.cpp
    M synfig-studio/src/gui/dials/zoomdial.cpp
    M synfig-studio/src/gui/docks/dock_history.cpp
    M synfig-studio/src/gui/docks/dock_history.h
    M synfig-studio/src/gui/docks/dock_layers.cpp
    M synfig-studio/src/gui/docks/dock_navigator.cpp
    M synfig-studio/src/gui/docks/dock_timetrack.cpp
    M synfig-studio/src/gui/docks/dockbook.cpp
    M synfig-studio/src/gui/docks/dockbook.h
    M synfig-studio/src/gui/docks/dockdialog.cpp
    A synfig-studio/src/gui/exception_guard.h
    M synfig-studio/src/gui/main.cpp
    M synfig-studio/src/gui/mainwindow.cpp
    M synfig-studio/src/gui/preview.cpp
    M synfig-studio/src/gui/selectdraghelper.h
    M synfig-studio/src/gui/states/state_mirror.cpp
    M synfig-studio/src/gui/trees/childrentree.cpp
    M synfig-studio/src/gui/trees/keyframetree.cpp
    M synfig-studio/src/gui/trees/keyframetree.h
    M synfig-studio/src/gui/trees/layergrouptree.cpp
    M synfig-studio/src/gui/trees/layergrouptree.h
    M synfig-studio/src/gui/trees/layertree.cpp
    M synfig-studio/src/gui/trees/layertree.h
    M synfig-studio/src/gui/widgets/widget_canvastimeslider.cpp
    M synfig-studio/src/gui/widgets/widget_color.cpp
    M synfig-studio/src/gui/widgets/widget_coloredit.cpp
    M synfig-studio/src/gui/widgets/widget_coloredit.h
    M synfig-studio/src/gui/widgets/widget_curves.cpp
    M synfig-studio/src/gui/widgets/widget_defaults.cpp
    M synfig-studio/src/gui/widgets/widget_distance.cpp
    M synfig-studio/src/gui/widgets/widget_distance.h
    M synfig-studio/src/gui/widgets/widget_gradient.cpp
    M synfig-studio/src/gui/widgets/widget_gradient.h
    M synfig-studio/src/gui/widgets/widget_keyframe_list.cpp
    M synfig-studio/src/gui/widgets/widget_keyframe_list.h
    M synfig-studio/src/gui/widgets/widget_soundwave.cpp
    M synfig-studio/src/gui/widgets/widget_time.cpp
    M synfig-studio/src/gui/widgets/widget_timeslider.cpp
    M synfig-studio/src/gui/widgets/widget_timetrack.cpp
    M synfig-studio/src/gui/workarea.cpp
    M synfig-studio/src/gui/workarearenderer/renderer_dragbox.cpp
    M synfig-studio/src/gui/workarearenderer/renderer_dragbox.h
    M synfig-studio/src/gui/workarearenderer/renderer_guides.h

  Log Message:
  -----------
  Merge PR#1475: try to catch all exceptions thrown in GTK event 
callback/handlers

try to catch all exceptions thrown in GTK event callback/handlers


Compare: https://github.com/synfig/synfig/compare/b6995dc5864f...27cd14ea7a25


_______________________________________________
Synfig-devl mailing list
Synfig-devl@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/synfig-devl

Reply via email to