WindowButtonMotionFCN callback slow down the application

I have a GUI with several objects ( axes, tables, checkboxes, labels ...), when i move over the axes i read the mousposition with the WindowButtonMotionFCN callback to show the data continously. The WindowButtonMotionFCN is only available for the whole figure so the callback is permantly firing when i move the mouse in the application. My problem now is when i move the mouse over the table or when i pushed a button, than it is so slow, sometimes over 10 seconds with no response. I checked the lag with the profiler and found out that the lag is from the WindowButtonMotionFCN because the event is permantly fired and caused a queue of WindowButtonMotionFCN. I tried to perpare the interrupte-properties, but it changed nothing.
Is there a opportunity to give a callback only for a object and not for the whole figure?
Has someone similar expericence or can give me a idea how to solve the problem?
Thanks in advance.

3 Comments

Same issue here. It worked fine before, but all of a sudden, the WindowButtonMotionFCN callback takes a long time to execute. Will post here if I find the answer.
I just updated matlab from 2021a to 2022b. That fixed my problem. If it ever returns, I'll try this solution!

Sign in to comment.

Answers (1)

function WindowButtonMotionFCN(FigH, EventData)
persistent blockCalls % Reject calling this function again until it is finished
if any(blockCalls), return, end
blockCalls = true;
moved = true;
while moved % Repeat until the motionhas stopped
pos = get(FigH, 'CurrentPoint');
... Your code here
moved = ~isequal(pos, get(FigH, 'CurrentPoint'));
end
blockCalls = false; % Allow further calls again
end

Categories

Find more on Interactive Control and Callbacks in Help Center and File Exchange

Asked:

on 30 Nov 2018

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!