From e0bd4e45ab947aef0600025d16d7df6502238e92 Mon Sep 17 00:00:00 2001 From: Dan Gudmundsson Date: Wed, 21 Nov 2012 14:46:57 +0100 Subject: observer: Fix check for graphics contexts wxWidgets-2.9 seg faults if you try to create a graphics context before the window is shown. With bad timing this can happen. So change the haveGC test to check if the functionality is available without creating the GraphicsContext. --- lib/observer/src/observer_app_wx.erl | 4 ++-- lib/observer/src/observer_perf_wx.erl | 9 ++++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/lib/observer/src/observer_app_wx.erl b/lib/observer/src/observer_app_wx.erl index b574307007..72bafcc5e0 100644 --- a/lib/observer/src/observer_app_wx.erl +++ b/lib/observer/src/observer_app_wx.erl @@ -28,7 +28,7 @@ -include("observer_defs.hrl"). %% Import drawing wrappers --import(observer_perf_wx, [haveGC/1, +-import(observer_perf_wx, [haveGC/0, setPen/2, setFont/3, setBrush/2, strokeLine/5, strokeLines/2, drawRoundedRectangle/6, drawText/4, getTextExtent/2]). @@ -114,7 +114,7 @@ init([Notebook, Parent]) -> _ -> ok end, - UseGC = haveGC(DrawingArea), + UseGC = haveGC(), Version28 = ?wxMAJOR_VERSION =:= 2 andalso ?wxMINOR_VERSION =:= 8, Font = case os:type() of {unix,_} when UseGC, Version28 -> diff --git a/lib/observer/src/observer_perf_wx.erl b/lib/observer/src/observer_perf_wx.erl index d0dd46b402..54c98f3ba3 100644 --- a/lib/observer/src/observer_perf_wx.erl +++ b/lib/observer/src/observer_perf_wx.erl @@ -24,7 +24,7 @@ handle_event/2, handle_sync_event/3, handle_cast/2]). %% Drawing wrappers for DC and GC areas --export([haveGC/1, +-export([haveGC/0, setPen/2, setFont/3, setBrush/2, strokeLine/5, strokeLines/2, drawRoundedRectangle/6, drawText/4, getTextExtent/2]). @@ -90,7 +90,7 @@ init([Notebook, Parent]) -> _ -> ok end, - UseGC = haveGC(Panel), + UseGC = haveGC(), Version28 = ?wxMAJOR_VERSION =:= 2 andalso ?wxMINOR_VERSION =:= 8, {Font, SmallFont} = case os:type() of @@ -525,10 +525,9 @@ colors() -> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% wxDC and ?wxGC wrappers -haveGC(Win) -> +haveGC() -> try - GC = ?wxGC:create(Win), - ?wxGC:destroy(GC), + wxGraphicsRenderer:getDefaultRenderer(), true catch _:_ -> false end. -- cgit v1.2.3