From 61a0b9059a22e0f8b16e4396d0f8cbf49f31998f Mon Sep 17 00:00:00 2001 From: Paul Cornett Date: Sun, 11 Mar 2007 03:00:47 +0000 Subject: [PATCH] use AllocExclusive git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@44761 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/mac/carbon/brush.h | 6 +++--- include/wx/mac/carbon/pen.h | 3 +++ src/mac/carbon/brush.cpp | 31 +++++++++++++------------------ src/mac/carbon/pen.cpp | 35 +++++++++++++++-------------------- 4 files changed, 34 insertions(+), 41 deletions(-) diff --git a/include/wx/mac/carbon/brush.h b/include/wx/mac/carbon/brush.h index 49528efbea..937109c915 100644 --- a/include/wx/mac/carbon/brush.h +++ b/include/wx/mac/carbon/brush.h @@ -64,9 +64,9 @@ public: // Useful helper: create the brush resource bool RealizeResource(); - // When setting properties, we must make sure we're not changing - // another object - void Unshare(); +protected: + virtual wxObjectRefData* CreateRefData() const; + virtual wxObjectRefData* CloneRefData(const wxObjectRefData* data) const; }; #endif diff --git a/include/wx/mac/carbon/pen.h b/include/wx/mac/carbon/pen.h index 511d9a456c..7f51e0add1 100644 --- a/include/wx/mac/carbon/pen.h +++ b/include/wx/mac/carbon/pen.h @@ -43,6 +43,9 @@ public: } protected: + virtual wxObjectRefData* CreateRefData() const; + virtual wxObjectRefData* CloneRefData(const wxObjectRefData* data) const; + int m_width; int m_style; int m_join ; diff --git a/src/mac/carbon/brush.cpp b/src/mac/carbon/brush.cpp index 74e83ebd77..88c588f67a 100644 --- a/src/mac/carbon/brush.cpp +++ b/src/mac/carbon/brush.cpp @@ -122,24 +122,19 @@ wxBrush::wxBrush( ThemeBrush macThemeBrush ) RealizeResource(); } -void wxBrush::Unshare() +wxObjectRefData* wxBrush::CreateRefData() const { - // Don't change shared data - if (!m_refData) - { - m_refData = new wxBrushRefData(); - } - else - { - wxBrushRefData* ref = new wxBrushRefData(*(wxBrushRefData*)m_refData); - UnRef(); - m_refData = ref; - } + return new wxBrushRefData; +} + +wxObjectRefData* wxBrush::CloneRefData(const wxObjectRefData* data) const +{ + return new wxBrushRefData(*wx_static_cast(const wxBrushRefData*, data)); } void wxBrush::SetColour(const wxColour& col) { - Unshare(); + AllocExclusive(); M_BRUSHDATA->m_macBrushKind = kwxMacBrushColour; M_BRUSHDATA->m_colour = col; @@ -148,7 +143,7 @@ void wxBrush::SetColour(const wxColour& col) void wxBrush::SetColour(unsigned char r, unsigned char g, unsigned char b) { - Unshare(); + AllocExclusive(); M_BRUSHDATA->m_macBrushKind = kwxMacBrushColour; M_BRUSHDATA->m_colour.Set(r, g, b); @@ -158,7 +153,7 @@ void wxBrush::SetColour(unsigned char r, unsigned char g, unsigned char b) void wxBrush::SetStyle(int Style) { - Unshare(); + AllocExclusive(); M_BRUSHDATA->m_macBrushKind = kwxMacBrushColour; M_BRUSHDATA->m_style = Style; @@ -168,7 +163,7 @@ void wxBrush::SetStyle(int Style) void wxBrush::SetStipple(const wxBitmap& Stipple) { - Unshare(); + AllocExclusive(); M_BRUSHDATA->m_macBrushKind = kwxMacBrushColour; M_BRUSHDATA->m_stipple = Stipple; @@ -178,7 +173,7 @@ void wxBrush::SetStipple(const wxBitmap& Stipple) void wxBrush::MacSetTheme(ThemeBrush macThemeBrush) { - Unshare(); + AllocExclusive(); M_BRUSHDATA->m_macBrushKind = kwxMacBrushTheme; M_BRUSHDATA->m_macThemeBrush = macThemeBrush; @@ -192,7 +187,7 @@ void wxBrush::MacSetTheme(ThemeBrush macThemeBrush) void wxBrush::MacSetThemeBackground(unsigned long macThemeBackground, const WXRECTPTR extent) { - Unshare(); + AllocExclusive(); M_BRUSHDATA->m_macBrushKind = kwxMacBrushThemeBackground; M_BRUSHDATA->m_macThemeBackground = macThemeBackground; diff --git a/src/mac/carbon/pen.cpp b/src/mac/carbon/pen.cpp index 7f0acfebe5..9812f009aa 100644 --- a/src/mac/carbon/pen.cpp +++ b/src/mac/carbon/pen.cpp @@ -86,24 +86,19 @@ wxPen::wxPen(const wxBitmap& stipple, int Width) RealizeResource(); } -void wxPen::Unshare() +wxObjectRefData* wxPen::CreateRefData() const { - // Don't change shared data - if (!m_refData) - { - m_refData = new wxPenRefData(); - } - else - { - wxPenRefData* ref = new wxPenRefData(*(wxPenRefData*)m_refData); - UnRef(); - m_refData = ref; - } + return new wxPenRefData; +} + +wxObjectRefData* wxPen::CloneRefData(const wxObjectRefData* data) const +{ + return new wxPenRefData(*wx_static_cast(const wxPenRefData*, data)); } void wxPen::SetColour(const wxColour& col) { - Unshare(); + AllocExclusive(); M_PENDATA->m_colour = col; @@ -112,7 +107,7 @@ void wxPen::SetColour(const wxColour& col) void wxPen::SetColour(unsigned char r, unsigned char g, unsigned char b) { - Unshare(); + AllocExclusive(); M_PENDATA->m_colour.Set(r, g, b); @@ -121,7 +116,7 @@ void wxPen::SetColour(unsigned char r, unsigned char g, unsigned char b) void wxPen::SetWidth(int Width) { - Unshare(); + AllocExclusive(); M_PENDATA->m_width = Width; @@ -130,7 +125,7 @@ void wxPen::SetWidth(int Width) void wxPen::SetStyle(int Style) { - Unshare(); + AllocExclusive(); M_PENDATA->m_style = Style; @@ -139,7 +134,7 @@ void wxPen::SetStyle(int Style) void wxPen::SetStipple(const wxBitmap& Stipple) { - Unshare(); + AllocExclusive(); M_PENDATA->m_stipple = Stipple; M_PENDATA->m_style = wxSTIPPLE; @@ -149,7 +144,7 @@ void wxPen::SetStipple(const wxBitmap& Stipple) void wxPen::SetDashes(int nb_dashes, const wxDash *Dash) { - Unshare(); + AllocExclusive(); M_PENDATA->m_nbDash = nb_dashes; M_PENDATA->m_dash = (wxDash *)Dash; @@ -159,7 +154,7 @@ void wxPen::SetDashes(int nb_dashes, const wxDash *Dash) void wxPen::SetJoin(int Join) { - Unshare(); + AllocExclusive(); M_PENDATA->m_join = Join; @@ -168,7 +163,7 @@ void wxPen::SetJoin(int Join) void wxPen::SetCap(int Cap) { - Unshare(); + AllocExclusive(); M_PENDATA->m_cap = Cap; -- 2.45.2