summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorMichael Meeks <michael.meeks@collabora.com>2015-05-07 22:08:21 +0100
committerMichael Meeks <michael.meeks@collabora.com>2015-05-08 17:37:41 +0100
commita738606d48d6678aaabf68a6ba748f79d5c6b9b8 (patch)
tree38f8184d4691c43e3a9e4beb7a1989ec1e7c1b4d /include
parent5c430093a301b31174a81ad4437f0361c86cfe3c (diff)
PostUserEvent - instrument to allow holding a VclPtr reference.
This helps avoid things dying during emission in a robust manner. Bit of an unpleasant 3rd optional parameter; better names appreciated. Change-Id: I27571823f9d96caef1d07602785a02390d3a3591
Diffstat (limited to 'include')
-rw-r--r--include/tools/link.hxx1
-rw-r--r--include/vcl/svapp.hxx4
-rw-r--r--include/vcl/window.hxx2
3 files changed, 5 insertions, 2 deletions
diff --git a/include/tools/link.hxx b/include/tools/link.hxx
index 55dfbae51887..4c2c32c4dfc3 100644
--- a/include/tools/link.hxx
+++ b/include/tools/link.hxx
@@ -153,6 +153,7 @@ public:
{ return function_ == other.function_ && instance_ == other.instance_; };
bool operator !=(Link const & other) const { return !operator ==(other); };
+ void *GetInstance() const { return instance_; }
private:
Stub * function_;
diff --git a/include/vcl/svapp.hxx b/include/vcl/svapp.hxx
index a576a2c479b8..78f758c6058f 100644
--- a/include/vcl/svapp.hxx
+++ b/include/vcl/svapp.hxx
@@ -865,10 +865,12 @@ public:
@param rLink Link to event callback function
@param pCaller Pointer to data sent to the event by the caller. Optional.
+ @param bReferenceLink If true - hold a VclPtr<> reference on the Link's instance.
@return the event ID used to post the event.
*/
- static ImplSVEvent * PostUserEvent( const Link<>& rLink, void* pCaller = NULL );
+ static ImplSVEvent * PostUserEvent( const Link<>& rLink, void* pCaller = NULL,
+ bool bReferenceLink = false );
/** Remove user event based on event ID
diff --git a/include/vcl/window.hxx b/include/vcl/window.hxx
index 3209906ff085..9c2526db8220 100644
--- a/include/vcl/window.hxx
+++ b/include/vcl/window.hxx
@@ -728,7 +728,7 @@ public:
void AddChildEventListener( const Link<>& rEventListener );
void RemoveChildEventListener( const Link<>& rEventListener );
- ImplSVEvent * PostUserEvent( const Link<>& rLink, void* pCaller = NULL );
+ ImplSVEvent * PostUserEvent( const Link<>& rLink, void* pCaller = NULL, bool bReferenceLink = false );
void RemoveUserEvent( ImplSVEvent * nUserEvent );
void IncrementLockCount();