vcl/inc/osx/a11ywrapper.h |    3 --
 vcl/osx/a11ywrapper.mm    |   60 +++++++++++++++++++---------------------------
 vcl/osx/salframeview.mm   |    8 ++----
 3 files changed, 30 insertions(+), 41 deletions(-)

New commits:
commit 7acc7660a752497a546263d28e82a2e8f61fd702
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Thu Jun 1 14:24:41 2023 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Fri Jun 2 08:03:00 2023 +0200

    reduce memory overhead of AquaA11yWrapper
    
    we can allocate this internally, which reduces the number of
    heap allocations we need to do
    
    Change-Id: Id5298e70b6816cd65d8285ceea846dc8e9e4b39d
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152489
    Reviewed-by: Patrick Luby <plub...@neooffice.org>
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/vcl/inc/osx/a11ywrapper.h b/vcl/inc/osx/a11ywrapper.h
index f9b30eb98fcd..469e50820e19 100644
--- a/vcl/inc/osx/a11ywrapper.h
+++ b/vcl/inc/osx/a11ywrapper.h
@@ -52,7 +52,7 @@ struct ReferenceWrapper
 
 @interface AquaA11yWrapper : NSView
 {
-    ReferenceWrapper * mpReferenceWrapper;
+    ReferenceWrapper maReferenceWrapper;
     BOOL mActsAsRadioGroup;
     BOOL mIsTableCell;
 }
@@ -88,7 +88,6 @@ struct ReferenceWrapper
 -(NSWindow*)windowForParent;
 -(id)initWithAccessibleContext: (css::uno::Reference < 
css::accessibility::XAccessibleContext >) anAccessibleContext;
 -(void) setDefaults: (css::uno::Reference < 
css::accessibility::XAccessibleContext >) rxAccessibleContext;
--(void) dealloc;
 +(void)setPopupMenuOpen:(BOOL)popupMenuOpen;
 -(css::accessibility::XAccessibleAction *)accessibleAction;
 -(css::accessibility::XAccessibleContext *)accessibleContext;
diff --git a/vcl/osx/a11ywrapper.mm b/vcl/osx/a11ywrapper.mm
index 96de29e07f77..75763a65a131 100644
--- a/vcl/osx/a11ywrapper.mm
+++ b/vcl/osx/a11ywrapper.mm
@@ -79,34 +79,33 @@ static std::ostream &operator<<(std::ostream &s, NSObject 
*obj) {
 }
 
 -(void) setDefaults: (Reference < XAccessibleContext >) rxAccessibleContext {
-    mpReferenceWrapper = new ReferenceWrapper;
     mActsAsRadioGroup = NO;
-    mpReferenceWrapper -> rAccessibleContext = rxAccessibleContext;
+    maReferenceWrapper.rAccessibleContext = rxAccessibleContext;
     mIsTableCell = NO;
     // Querying all supported interfaces
     try {
         // XAccessibleComponent
-        mpReferenceWrapper->rAccessibleComponent.set( rxAccessibleContext, 
UNO_QUERY );
+        maReferenceWrapper.rAccessibleComponent.set( rxAccessibleContext, 
UNO_QUERY );
         // XAccessibleExtendedComponent
-        mpReferenceWrapper->rAccessibleExtendedComponent.set( 
rxAccessibleContext, UNO_QUERY );
+        maReferenceWrapper.rAccessibleExtendedComponent.set( 
rxAccessibleContext, UNO_QUERY );
         // XAccessibleSelection
-        mpReferenceWrapper->rAccessibleSelection.set( rxAccessibleContext, 
UNO_QUERY );
+        maReferenceWrapper.rAccessibleSelection.set( rxAccessibleContext, 
UNO_QUERY );
         // XAccessibleTable
-        mpReferenceWrapper->rAccessibleTable.set( rxAccessibleContext, 
UNO_QUERY );
+        maReferenceWrapper.rAccessibleTable.set( rxAccessibleContext, 
UNO_QUERY );
         // XAccessibleText
-        mpReferenceWrapper->rAccessibleText.set( rxAccessibleContext, 
UNO_QUERY );
+        maReferenceWrapper.rAccessibleText.set( rxAccessibleContext, UNO_QUERY 
);
         // XAccessibleEditableText
-        mpReferenceWrapper->rAccessibleEditableText.set( rxAccessibleContext, 
UNO_QUERY );
+        maReferenceWrapper.rAccessibleEditableText.set( rxAccessibleContext, 
UNO_QUERY );
         // XAccessibleValue
-        mpReferenceWrapper->rAccessibleValue.set( rxAccessibleContext, 
UNO_QUERY );
+        maReferenceWrapper.rAccessibleValue.set( rxAccessibleContext, 
UNO_QUERY );
         // XAccessibleAction
-        mpReferenceWrapper->rAccessibleAction.set( rxAccessibleContext, 
UNO_QUERY );
+        maReferenceWrapper.rAccessibleAction.set( rxAccessibleContext, 
UNO_QUERY );
         // XAccessibleTextAttributes
-        mpReferenceWrapper->rAccessibleTextAttributes.set( 
rxAccessibleContext, UNO_QUERY );
+        maReferenceWrapper.rAccessibleTextAttributes.set( rxAccessibleContext, 
UNO_QUERY );
         // XAccessibleMultiLineText
-        mpReferenceWrapper->rAccessibleMultiLineText.set( rxAccessibleContext, 
UNO_QUERY );
+        maReferenceWrapper.rAccessibleMultiLineText.set( rxAccessibleContext, 
UNO_QUERY );
         // XAccessibleTextMarkup
-        mpReferenceWrapper->rAccessibleTextMarkup.set( rxAccessibleContext, 
UNO_QUERY );
+        maReferenceWrapper.rAccessibleTextMarkup.set( rxAccessibleContext, 
UNO_QUERY );
         // XAccessibleEventBroadcaster
         #if 0
         /* #i102033# NSAccessibility does not seemt to know an equivalent for 
transient children.
@@ -137,13 +136,6 @@ static std::ostream &operator<<(std::ostream &s, NSObject 
*obj) {
     }
 }
 
--(void)dealloc {
-    if ( mpReferenceWrapper ) {
-        delete mpReferenceWrapper;
-    }
-    [ super dealloc ];
-}
-
 #pragma mark -
 #pragma mark Utility Section
 
@@ -1112,10 +1104,10 @@ static Reference < XAccessibleContext > hitTestRunner ( 
css::awt::Point point,
     }
     // nothing hit yet, so check ourself
     if ( ! hitChild.is() ) {
-        if ( !mpReferenceWrapper ) {
+        if ( !maReferenceWrapper.rAccessibleContext ) {
             [ self setDefaults: [ self accessibleContext ] ];
         }
-        hitChild = hitTestRunner ( hitPoint, mpReferenceWrapper -> 
rAccessibleContext );
+        hitChild = hitTestRunner ( hitPoint, 
maReferenceWrapper.rAccessibleContext );
     }
     if ( hitChild.is() ) {
         wrapper = [ AquaA11yFactory wrapperForAccessibleContext: hitChild ];
@@ -1130,51 +1122,51 @@ static Reference < XAccessibleContext > hitTestRunner ( 
css::awt::Point point,
 #pragma mark Access Methods
 
 -(XAccessibleAction *)accessibleAction {
-    return mpReferenceWrapper -> rAccessibleAction.get();
+    return maReferenceWrapper.rAccessibleAction.get();
 }
 
 -(XAccessibleContext *)accessibleContext {
-    return mpReferenceWrapper -> rAccessibleContext.get();
+    return maReferenceWrapper.rAccessibleContext.get();
 }
 
 -(XAccessibleComponent *)accessibleComponent {
-    return mpReferenceWrapper -> rAccessibleComponent.get();
+    return maReferenceWrapper.rAccessibleComponent.get();
 }
 
 -(XAccessibleExtendedComponent *)accessibleExtendedComponent {
-    return mpReferenceWrapper -> rAccessibleExtendedComponent.get();
+    return maReferenceWrapper.rAccessibleExtendedComponent.get();
 }
 
 -(XAccessibleSelection *)accessibleSelection {
-    return mpReferenceWrapper -> rAccessibleSelection.get();
+    return maReferenceWrapper.rAccessibleSelection.get();
 }
 
 -(XAccessibleTable *)accessibleTable {
-    return mpReferenceWrapper -> rAccessibleTable.get();
+    return maReferenceWrapper.rAccessibleTable.get();
 }
 
 -(XAccessibleText *)accessibleText {
-    return mpReferenceWrapper -> rAccessibleText.get();
+    return maReferenceWrapper.rAccessibleText.get();
 }
 
 -(XAccessibleEditableText *)accessibleEditableText {
-    return mpReferenceWrapper -> rAccessibleEditableText.get();
+    return maReferenceWrapper.rAccessibleEditableText.get();
 }
 
 -(XAccessibleValue *)accessibleValue {
-    return mpReferenceWrapper -> rAccessibleValue.get();
+    return maReferenceWrapper.rAccessibleValue.get();
 }
 
 -(XAccessibleTextAttributes *)accessibleTextAttributes {
-    return mpReferenceWrapper -> rAccessibleTextAttributes.get();
+    return maReferenceWrapper.rAccessibleTextAttributes.get();
 }
 
 -(XAccessibleMultiLineText *)accessibleMultiLineText {
-    return mpReferenceWrapper -> rAccessibleMultiLineText.get();
+    return maReferenceWrapper.rAccessibleMultiLineText.get();
 }
 
 -(XAccessibleTextMarkup *)accessibleTextMarkup {
-    return mpReferenceWrapper -> rAccessibleTextMarkup.get();
+    return maReferenceWrapper.rAccessibleTextMarkup.get();
 }
 
 -(NSWindow*)windowForParent {
diff --git a/vcl/osx/salframeview.mm b/vcl/osx/salframeview.mm
index 3b2341a33fe4..ad4dd40cfebb 100644
--- a/vcl/osx/salframeview.mm
+++ b/vcl/osx/salframeview.mm
@@ -618,7 +618,6 @@ static AquaSalFrame* getMouseContainerFrame()
         mpLastEvent = nil;
         mMarkedRange = NSMakeRange(NSNotFound, 0);
         mSelectedRange = NSMakeRange(NSNotFound, 0);
-        mpReferenceWrapper = nil;
         mpMouseEventListener = nil;
         mpLastSuperEvent = nil;
         mfLastMagnifyTime = 0.0;
@@ -2054,15 +2053,14 @@ static AquaSalFrame* getMouseContainerFrame()
 
 -(css::accessibility::XAccessibleContext *)accessibleContext
 {
-    if ( !mpReferenceWrapper ) {
+    if ( !maReferenceWrapper.rAccessibleContext ) {
         // some frames never become visible ..
         vcl::Window *pWindow = mpFrame -> GetWindow();
         if ( ! pWindow )
             return nil;
 
-        mpReferenceWrapper = new ReferenceWrapper;
-        mpReferenceWrapper -> rAccessibleContext =  pWindow -> 
/*GetAccessibleChildWindow( 0 ) ->*/ GetAccessible() -> getAccessibleContext();
-        [ AquaA11yFactory insertIntoWrapperRepository: self 
forAccessibleContext: mpReferenceWrapper -> rAccessibleContext ];
+        maReferenceWrapper.rAccessibleContext =  pWindow -> 
/*GetAccessibleChildWindow( 0 ) ->*/ GetAccessible() -> getAccessibleContext();
+        [ AquaA11yFactory insertIntoWrapperRepository: self 
forAccessibleContext: maReferenceWrapper.rAccessibleContext ];
     }
     return [ super accessibleContext ];
 }

Reply via email to