From b5922fb7f111453e53286677179ac41c66a2cd0f Mon Sep 17 00:00:00 2001 From: Martin Stein Date: Mon, 25 Nov 2013 22:44:51 +0100 Subject: [PATCH] hw: dissolve signal context in Pager_entrypoint ref #964 --- base-hw/src/base/pager.cc | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/base-hw/src/base/pager.cc b/base-hw/src/base/pager.cc index e49b4c7a1..a0916af24 100644 --- a/base-hw/src/base/pager.cc +++ b/base-hw/src/base/pager.cc @@ -124,7 +124,16 @@ Native_capability Pager_activation_base::cap() ** Pager_entrypoint ** **********************/ -void Pager_entrypoint::dissolve(Pager_object * const o) { remove_locked(o); } +void Pager_entrypoint::dissolve(Pager_object * const o) +{ + /* let entrypoint dissolve the pager object */ + remove_locked(o); + o->cap(Native_capability()); + + /* let activation signal-receiver dissolve the pager signal-context */ + o->_signal_context_cap = Signal_context_capability(); + _activation->Signal_receiver::dissolve(o); +} Pager_entrypoint::Pager_entrypoint(Cap_session *, @@ -138,8 +147,10 @@ Pager_entrypoint::Pager_entrypoint(Cap_session *, Pager_capability Pager_entrypoint::manage(Pager_object * const o) { - if (!_activation) return Pager_capability(); + /* let activation signal-receiver manage the pager signal-context */ o->_signal_context_cap = _activation->Signal_receiver::manage(o); + + /* let entrypoint manage the pager object */ unsigned const dst = _activation->cap().dst(); Native_capability c = Native_capability(dst, o->badge()); o->cap(c);