From 8f295d64c5eea03f55aec2abb4e11041b928e8e3 Mon Sep 17 00:00:00 2001 From: ederag Date: Wed, 26 Feb 2020 21:35:10 +0100 Subject: [PATCH 1/2] store _window as soon as possible --- src/hamster/lib/graphics.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/hamster/lib/graphics.py b/src/hamster/lib/graphics.py index 5c532e556..af4ceb750 100644 --- a/src/hamster/lib/graphics.py +++ b/src/hamster/lib/graphics.py @@ -1869,6 +1869,8 @@ def __init__(self, interactive = True, framerate = 60, self.__last_mouse_move = None + self.connect("realize", self.__on_realize) + if interactive: self.set_can_focus(True) self.set_events(gdk.EventMask.POINTER_MOTION_MASK @@ -1983,7 +1985,6 @@ def do_draw(self, context): context.scale(aspect_x, aspect_y) if self.fps is None: - self._window = self.get_window() self.emit("on-first-frame", context) cursor, self.mouse_x, self.mouse_y, mods = self._window.get_pointer() @@ -2241,6 +2242,10 @@ def __on_button_release(self, scene, event): self.__check_mouse(event.x, event.y) return True + def __on_realize(self, widget): + # Store as soon as available. Maybe for performance reasons, + # to avoid get_window() calls in __on_mouse_move ? + self._window = self.get_window() def __on_scroll(self, scene, event): target = self.get_sprite_at_position(event.x, event.y) From 6fa4c20266c6324bffd722a53e3f4c6b4b90af2f Mon Sep 17 00:00:00 2001 From: ederag Date: Sun, 1 Mar 2020 14:19:04 +0100 Subject: [PATCH 2/2] update version to 3.0.1 --- .bumpversion.cfg | 2 +- NEWS | 7 ++++++- src/hamster/__init__.py | 2 +- wscript | 2 +- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 22b85bc32..e68e1b7ac 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 3.0-beta +current_version = 3.0.1 parse = (?P\d+)\.(?P\d+)(\.(?P\d+))? serialize = {major}.{minor}.{patch} diff --git a/NEWS b/NEWS index be37972aa..62555a125 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,9 @@ -Changes since 2.2.2 +Changes in 3.0.1 + +* Fixed a rare crash in hamster-window-server (Issue 571). + + +Changes in 3.0 * Fixed dialogs placement (PR 549): - dialogs appear above their parent (the overview, if opened). diff --git a/src/hamster/__init__.py b/src/hamster/__init__.py index bede54b5d..e209c7ec3 100644 --- a/src/hamster/__init__.py +++ b/src/hamster/__init__.py @@ -18,7 +18,7 @@ # if defs is not there, we are running from sources from subprocess import getstatusoutput rc, output = getstatusoutput("git describe --tags --always --dirty=+") - __version__ = "3.0" if rc else "{} (uninstalled)".format(output) + __version__ = "3.0.1" if rc else "{} (uninstalled)".format(output) installed = False del getstatusoutput, rc, output diff --git a/wscript b/wscript index c7dd877b1..d2c77413c 100644 --- a/wscript +++ b/wscript @@ -8,7 +8,7 @@ from waflib import Utils # slight code duplication with hamster/__init__.py, but this is finally cleaner. rc, output = getstatusoutput("git describe --tags --always --dirty=+") -VERSION = "3.0" if rc else output +VERSION = "3.0.1" if rc else output APPNAME = 'hamster'