On 20/08/2014 5:35 AM, Raphael Zulliger
wrote:
That's
true. But in this case, the "update request" is performed on the
Root-TreeItem (e.g. the "MyObject" (see previous mail) _expression_
that is the struct instance). This happens after every single-step
(or similar) operation (it's the suspend event that causes this,
if I remember correctly). That root item doesn't care about
visibility of children. It simply forwards the "update request" to
GDB (-var-update) which in turn updates all children, unless
someone taught it to do otherwise (by -var-set-frozen commands).
Btw: This happens even if the root item is collapsed. Therefore:
Every _expression_ that has been expanded some time ago consumes
resources on every single-step & co operation.
I did some further "research" and I think I can now clarify my
question a bit: What I'm currently trying to do is to execute a
"-var-set-frozen 1" or "-var-set-frozen 0" on each child of a
MIVariableManager.MIRootVariableObject right before the
"-var-update" happens (in
MIVariableManager.MIRootVariableObject.update). Of course I would
only execute that command if not already done before. The only
missing thing is, that
IVariableManager.MIRootVariableObject.update somehow needs to know
which children are visible and which are not.
Therefore, I'm currently trying to figure out:
- Where should I place code that checks which children TreeItems
are visible? (ExpressionVMProviderModelProxyStrategy?
GDBExpressionVMProvider? ...)
- What would be a good way to pass this information to
MIVariableManager? (By dedicated public members of
MIVariableManager?)
I think the check should be done in ExpressionVMProviderModelProxyStrategy.
It will notify GDBExpressionVMProvider which will use an extension
of the IExpressions service to pass the information to
MIVariableManager.
|