Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [cdt-dev] Freeze invisible GDB variable objects

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.

Back to the top