OI10 Screen rendering slowdown (OpenInsight 64-bit)
At 22 NOV 2021 09:06:09AM Brad Haughn wrote:
Hi all,
Been trying to work through where things are taking time now in OI10 for launching a screen.
Process works that we have a screen with a list of records on it, the user double clicks on one to get details, and we launch another screen with those details for that record. So we fire the menu item for the screen in question and then set the QBFLIST property to the record (or records if they used an option to select more than one record) of the newly launched screen.
This process, which used to be near instant in oi9 is now taking about 5 or 6 seconds in oi10 and we're trying to track down where, but as far as we can see things now queue rather than process - so when we try and log things it all happens just as fast as before, but the screen takes additional time to render after all of the code we are running finishes.
We tried using an engine log as well and see a lot of hscroll and vscroll events we don't fire being added as well (don't know if that adds to the time or not).
I guess I'm asking: is there a way I can track the new rendering time so we can find out what rendering commands we want to delay/change? Is there a way to turn the engine log on/off within code and save the results to a record somehow rather than manually turning on which thus encompasses the entire process rather than a piece of we wanted to log only that? Is there a way to prevent process queueing and run as it did before so we can try and better track time without adding yields after every command? Is there any other advice that can be offered that we can try and apply
At 22 NOV 2021 11:03AM Carl Pates wrote:
Hi Brad,
What version of OI is this?
Can you clarify "things now queue rather than process". Not sure what is being queued?
We tried using an engine log as well and see a lot of hscroll and vscroll events we don't fire being added as well
I don't see any reason why the HSCROLL/VSROLL events are firing if you didn't add them. Do you have promoted versions of these perhaps? Are they triggered from a certain form or control? They might add time depending on what they do, but there's not system promoted scroll events that I can recall.
Is there a way to turn the engine log on/off within code and save the results to a record somehow rather than manually turning on which thus encompasses the entire process rather than a piece of we wanted to log only that? I
Short answer: No. What I normally do in this situation is to use the profile log and before I enter the section of code I want to profile I'll call a proc that does nothing but it has a unique name I can find in the log file easily. If you're loading a form you need to be looking for the START_WINDOW call - within that you will see other calls like START_OIWIN, your CREATE event etc. That might help. If it's the actual low-level painting that's an issue then we'd need to run it under something like the VS profiler to see if we have any bottle necks.
Regards
At 22 NOV 2021 11:11AM Brad Haughn wrote:
Hi Carl,
We're using 10.0.8
queueing was that it appears as though events queue up rather than run right away as the time some of the events would take to fire exceeded how long it took for the system to say it was processed (so async rather than sync calls it would appear. Made this assumption based on how the system is working and that if we fire a yield it returns after a second having done the calls the already got a report back of finished)
We are not adding any events of any kind (or calling any hscroll or vscroll events) which is why I brought it up when we saw it in the event log and we have no promoted events along with them either. It was confusing to us that they appeared there when just doing something like a window create and a record read.
And based on your answer, it sounds like I would need to do some sort of VS profiler then. We were debugging at the create then read, then a post_read event and it was too high level to track. The number of hscroll/vscrolls made it hard to follow since it appeared to fire each for every edittable on the screen.
At 22 NOV 2021 11:20AM Donald Bakke wrote:
What I normally do in this situation is to use the profile log and before I enter the section of code I want to profile I'll call a proc that does nothing but it has a unique name I can find in the log file easily.
That is actually quite clever.
At 22 NOV 2021 12:16PM Carl Pates wrote:
Hi Brad,
By default all events in OI (v9 and v10) raised by the PS are async. Having said that - if the engine is idle they will be executed immediately , but if the engine is busy (i.e. it is already executing a previous event) then the new event will be queued until the engine is idle OR a Yield() call is made from the currently executing event, in which case the queued events are executed).
However, first let's look at these scroll events…
Can you use the Event Config dialog to see if any are marked as "force"? (IDE→Menu→Tools→Form Designer→Event Configuration).
(If it's missing from the menu then execute the RTI_IDE_CFG_EVENTS dialog - it was missing in some earlier versions)
Check the EditTable and the other controls that support scrolling to ensure that the HSCROLL and VSCROLL events are not flagged. OI will only raise one a scroll event if the event has been qualified, i.e.:
1) You've defined an event script for it, or
2) You've defined a quick event for it, or
3) It's been marked as "Force" so the Form Compiler always qualifies the event.
If we can remove this unneeded chatter then we can see what's left to look at.
Also, before we go too far down a rabbit hole - are you on the Beta program? If so is it possible to upgrade and test your system and check to see if this is an issue in the latest release? There's a lot of changes in v10.1 that might have mitigated this issue, so it might be an idea just to check this?
Regards
Carl
At 22 NOV 2021 12:18PM Carl Pates wrote:
Cheers Don :) Too many hours spent combing through them …
At 22 NOV 2021 01:33PM Brad Haughn wrote:
Hi Carl,
I checked the events and none had the force marked that had anything to do with scrolling. So particularly HSCROLL and VSCROLL were not set.
We do have quick events on all of our edittables on all of our screens in our system.
On that, is there any property that you can set on an edittable that might fire these events afterwards? We do things like set the context menu property and the property of which fields have an options value/search option on create.
We are not in the beta program and are actually awaiting other fixes that 10.1 might provide for other index related issues.
Assuming I also don't remember how and have been searching for it unsuccessfully: how would one turn on profile logging so I can do some of that debugging as well?
At 22 NOV 2021 02:16PM Carl Pates wrote:
Hi Brad,
For an EditTable HSCROLL or VSCROLL is only raised by the PS when the TOPPOS changes (i.e when the user scrolls the control or you set the property yourself).
However, the event is only raised if it has been qualified. So, to see if this is happening open the compiled form record (in the SYSREPOSWINEXES table) look in the structure to see if you can spot any references to the HSCROLL or VSCROLL events.
On that, is there any property that you can set on an edittable that might fire these events afterwards? We do things like set the context menu property and the property of which fields have an options value/search option on create.
There is no property that will force an event to be triggered if it has not been qualified.
If you can't find any reference to the scroll events in the form exe record you could try using the Event Spy to look at what events OI is trying to execute at runtime. To do this run
SETDEBUGGER SPY 1
In the System Monitor, and look at the output. See if you can see how the system is finding and resolving the scroll events - that might give another clue as to where they are.
Use:
SETDEBUGGER SPY 0
to stop the logging.
Assuming I also don't remember how and have been searching for it unsuccessfully: how would one turn on profile logging so I can do some of that debugging as well?
Create a file called "RevProfile.log" in your OI folder before you start OI. The system will create a RevProfile_nnnnn.log where nnnnn is replaced by the OI Process ID. You can examine this file after OI is closed.
We are not in the beta program and are actually awaiting other fixes that 10.1 might provide for other index related issues.
A new Beta release went out today - might be worth dropping Rev US a line to see if you can get on it. If there are issues you are waiting for you could see if they are fixed?
Regards
At 26 NOV 2021 01:37PM Brad Haughn wrote:
Hi Carl,
ok, we tried a number of things to track this down based on the feedback here.
Tried the profile log, and if I am reading it correctly, it is telling me the processing time of all the events to finish is about twice as fast as it actually is. It also has no HSCROLL of VSCROLL calls which we see in the engine log.
We tried the event spy with SETDEBUGGER SPY 1, and this made it very easy to track those HSCROLL and VSCROLL events coming up. Well, that we can see them anyways. We bit by bit removed all the code on our screen save for setting the size during the create event and setting the QBFLIST property which fires read.
The event spy log shows every edittable on the screen having both HSCROLL and VSCROLL fired 3 times. It also shows the size event firing twice even though we set it once. It also fires both events again for every edittable an additional time when I clicked off the window onto the system monitor to end the spy. For this, the window was no longer even visible.
So we then created a script event and added a debug to the HSCROLL of one of our edittables and got the call stack with RETSTACK. It was just 'run_event' and the event we were in running. Additionally, if we had that debug, every time we F5ed through, it auto called it again, thus we were in an infinite loop.
It seems to us here that those events are being fired without being prompted by anything we can find other than perhaps just getting focus or becoming visible? Hopefully its not too much, but I've got a paste of the event spy log we did:
RUN_EVENT executing : CREATE for WO_PLAN_DIN*158 RUN_EVENT calling:MPC*CREATE*WO_PLAN_DIN. ... RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : SYSMSG for WO_PLAN_DIN*158 RUN_EVENT calling:MPC*SYSMSG..OIWIN* ... RUN_EVENT calling:SYSPROG*SYSMSG..OIWIN* ... RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : READ for WO_PLAN_DIN*158 RUN_EVENT calling:MPC*READ*WO_PLAN_DIN. ... Looking for:MPC*READ*WO_PLAN_DIN ... FORWARD_EVENT calling:SYSPROG*READ.WINDOW.OIWIN* ... Looking for:MPC*READ..OIWIN* ... Looking for:SYSPROG*READ..OIWIN* ... Looking for:MPC*..OIWIN* ... FORWARD_EVENT calling:SYSPROG*..OIWIN* ... Looking for:MPC*READ.WINDOW* ... RUN_EVENT executing : SIZE for WO_PLAN_DIN*158 RUN_EVENT calling:MPC*SIZE*WO_PLAN_DIN. ... RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.EQUIPMENT RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.EQUIPMENT RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.ISSUE_TO RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.ISSUE_TO RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.LABOUR_EQP RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.LABOUR_EQP RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.MATERIAL_EQP RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.MATERIAL_EQP RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.HM_EQP RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.HM_EQP RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.STD_PROC RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.STD_PROC RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.SFT_PROC RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.SFT_PROC RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.DOCUMENT_TABLE RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.DOCUMENT_TABLE RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.CLIST_TABLE RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.CLIST_TABLE RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.TOOLS RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.TOOLS RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.LABOUR RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.LABOUR RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.MATERIAL RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.MATERIAL RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.HM RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.HM RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.RFS RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.RFS RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.TAG_INFO RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.TAG_INFO RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.PORT_TAG_INFO RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.PORT_TAG_INFO RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : SIZE for WO_PLAN_DIN*158 RUN_EVENT calling:MPC*SIZE*WO_PLAN_DIN. ... RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : GOTFOCUS for WO_PLAN_DIN*158.WO_NO RUN_EVENT calling:SYSPROG*GOTFOCUS..OIWIN* ... RUN_EVENT calling:SYSPROG*..OIWIN* ... WINDOW_SEQKEY (...) RUN_EVENT executing : ACTIVATED for WO_PLAN_DIN*158 RUN_EVENT calling:MPC*ACTIVATED*WO_PLAN_DIN. ... Looking for:MPC*ACTIVATED*WO_PLAN_DIN ... Looking for:MPC*ACTIVATED.WINDOW.OIWIN* ... Looking for:SYSPROG*ACTIVATED.WINDOW.OIWIN* ... Looking for:MPC*ACTIVATED..OIWIN* ... Looking for:SYSPROG*ACTIVATED..OIWIN* ... Looking for:MPC*..OIWIN* ... FORWARD_EVENT calling:SYSPROG*..OIWIN* ... MENU_ENABLE (...) RUN_EVENT executing : EDITSTATECHANGED for WO_PLAN_DIN*158.TYPE RUN_EVENT calling:SYSPROG*EDITSTATECHANGED..OIWIN* ... RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : EDITSTATECHANGED for WO_PLAN_DIN*158.STATUS RUN_EVENT calling:SYSPROG*EDITSTATECHANGED..OIWIN* ... RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : EDITSTATECHANGED for WO_PLAN_DIN*158.DATE RUN_EVENT calling:SYSPROG*EDITSTATECHANGED..OIWIN* ... RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : EDITSTATECHANGED for WO_PLAN_DIN*158.PRIORITY RUN_EVENT calling:SYSPROG*EDITSTATECHANGED..OIWIN* ... RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : EDITSTATECHANGED for WO_PLAN_DIN*158.JOB_TYPE RUN_EVENT calling:SYSPROG*EDITSTATECHANGED..OIWIN* ... RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : EDITSTATECHANGED for WO_PLAN_DIN*158.STEP RUN_EVENT calling:SYSPROG*EDITSTATECHANGED..OIWIN* ... RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : EDITSTATECHANGED for WO_PLAN_DIN*158.COMPLETION_DATE RUN_EVENT calling:SYSPROG*EDITSTATECHANGED..OIWIN* ... RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : EDITSTATECHANGED for WO_PLAN_DIN*158.MAJOR_CODE RUN_EVENT calling:SYSPROG*EDITSTATECHANGED..OIWIN* ... RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : EDITSTATECHANGED for WO_PLAN_DIN*158.FAIL_CODE RUN_EVENT calling:SYSPROG*EDITSTATECHANGED..OIWIN* ... RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : EDITSTATECHANGED for WO_PLAN_DIN*158.BUILDING_ID RUN_EVENT calling:SYSPROG*EDITSTATECHANGED..OIWIN* ... RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : EDITSTATECHANGED for WO_PLAN_DIN*158.ASSIGN_TO RUN_EVENT calling:SYSPROG*EDITSTATECHANGED..OIWIN* ... RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : EDITSTATECHANGED for WO_PLAN_DIN*158.PLANNED_DATE RUN_EVENT calling:SYSPROG*EDITSTATECHANGED..OIWIN* ... RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : EDITSTATECHANGED for WO_PLAN_DIN*158.DATE_DUE RUN_EVENT calling:SYSPROG*EDITSTATECHANGED..OIWIN* ... RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : ACTIVATED for WO_PLAN_DIN*158 RUN_EVENT calling:MPC*ACTIVATED*WO_PLAN_DIN. ... Looking for:MPC*ACTIVATED*WO_PLAN_DIN ... Looking for:MPC*ACTIVATED.WINDOW.OIWIN* ... Looking for:SYSPROG*ACTIVATED.WINDOW.OIWIN* ... Looking for:MPC*ACTIVATED..OIWIN* ... Looking for:SYSPROG*ACTIVATED..OIWIN* ... Looking for:MPC*..OIWIN* ... FORWARD_EVENT calling:SYSPROG*..OIWIN* ... MENU_ENABLE (...) RUN_EVENT executing : EDITSTATECHANGED for WO_PLAN_DIN*158.WO_NO RUN_EVENT calling:SYSPROG*EDITSTATECHANGED..OIWIN* ... RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : EDITSTATECHANGED for WO_PLAN_DIN*158.TYPE RUN_EVENT calling:SYSPROG*EDITSTATECHANGED..OIWIN* ... RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : EDITSTATECHANGED for WO_PLAN_DIN*158.STATUS RUN_EVENT calling:SYSPROG*EDITSTATECHANGED..OIWIN* ... RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : EDITSTATECHANGED for WO_PLAN_DIN*158.DATE RUN_EVENT calling:SYSPROG*EDITSTATECHANGED..OIWIN* ... RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : EDITSTATECHANGED for WO_PLAN_DIN*158.PRIORITY RUN_EVENT calling:SYSPROG*EDITSTATECHANGED..OIWIN* ... RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : CHANGED for WO_PLAN_DIN*158.POST_READ RUN_EVENT calling:MPC*CHANGED*WO_PLAN_DIN.POST_READ ... RUN_EVENT calling:SYSPROG*..OIWIN* ... WINDOW_POSTREAD (...) RUN_EVENT executing : EDITSTATECHANGED for WO_PLAN_DIN*158.SUBMITTED_BY RUN_EVENT calling:SYSPROG*EDITSTATECHANGED..OIWIN* ... RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : EDITSTATECHANGED for WO_PLAN_DIN*158.PROJ_NO RUN_EVENT calling:SYSPROG*EDITSTATECHANGED..OIWIN* ... RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : EDITSTATECHANGED for WO_PLAN_DIN*158.PM_PROC_NO RUN_EVENT calling:SYSPROG*EDITSTATECHANGED..OIWIN* ... RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : EDITSTATECHANGED for WO_PLAN_DIN*158.COMPLETED_BY RUN_EVENT calling:SYSPROG*EDITSTATECHANGED..OIWIN* ... RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : EDITSTATECHANGED for WO_PLAN_DIN*158.DOWNTIME_IN_HOURS RUN_EVENT calling:SYSPROG*EDITSTATECHANGED..OIWIN* ... RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : EDITSTATECHANGED for WO_PLAN_DIN*158.BUILDING_ID RUN_EVENT calling:SYSPROG*EDITSTATECHANGED..OIWIN* ... RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : EDITSTATECHANGED for WO_PLAN_DIN*158.BUILDING_NAME RUN_EVENT calling:SYSPROG*EDITSTATECHANGED..OIWIN* ... RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.EQUIPMENT RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.EQUIPMENT RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : EDITSTATECHANGED for WO_PLAN_DIN*158.ASSIGN_TO RUN_EVENT calling:SYSPROG*EDITSTATECHANGED..OIWIN* ... RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.ISSUE_TO RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.ISSUE_TO RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : EDITSTATECHANGED for WO_PLAN_DIN*158.PLANNED_BY RUN_EVENT calling:SYSPROG*EDITSTATECHANGED..OIWIN* ... RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : EDITSTATECHANGED for WO_PLAN_DIN*158.PLANNED_DATE RUN_EVENT calling:SYSPROG*EDITSTATECHANGED..OIWIN* ... RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : EDITSTATECHANGED for WO_PLAN_DIN*158.DATE_DUE RUN_EVENT calling:SYSPROG*EDITSTATECHANGED..OIWIN* ... RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.STD_PROC RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.STD_PROC RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.SFT_PROC RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.SFT_PROC RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.DOCUMENT_TABLE RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.DOCUMENT_TABLE RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.CLIST_TABLE RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.CLIST_TABLE RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.TOOLS RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.TOOLS RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.LABOUR RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.LABOUR RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.MATERIAL RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.MATERIAL RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.HM RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.HM RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.RFS RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.RFS RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.TAG_INFO RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.TAG_INFO RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.PORT_TAG_INFO RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.PORT_TAG_INFO RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : CHANGED for WO_PLAN_DIN*158.POST_READ RUN_EVENT calling:MPC*CHANGED*WO_PLAN_DIN.POST_READ ... RUN_EVENT calling:SYSPROG*..OIWIN* ... WINDOW_POSTREAD (...) RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.EQUIPMENT RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.EQUIPMENT RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.ISSUE_TO RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.ISSUE_TO RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.STD_PROC RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.STD_PROC RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.SFT_PROC RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.SFT_PROC RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.DOCUMENT_TABLE RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.DOCUMENT_TABLE RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.CLIST_TABLE RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.CLIST_TABLE RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.TOOLS RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.TOOLS RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.LABOUR RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.LABOUR RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.MATERIAL RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.MATERIAL RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.HM RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.HM RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.RFS RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.RFS RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.TAG_INFO RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.TAG_INFO RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.PORT_TAG_INFO RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.PORT_TAG_INFO RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.HM_EQP RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.HM_EQP RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.HM_EQP RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.MATERIAL_EQP RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.MATERIAL_EQP RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.MATERIAL_EQP RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.MATERIAL_EQP RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.MATERIAL_EQP RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.MATERIAL_EQP RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : LOSTFOCUS for WO_PLAN_DIN*158.WO_NO RUN_EVENT calling:MPC*LOSTFOCUS*WO_PLAN_DIN.WO_NO ... RUN_EVENT calling:SYSPROG*LOSTFOCUS..OIWIN* ... RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.PORT_TAG_INFO RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.PORT_TAG_INFO RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.TAG_INFO RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.TAG_INFO RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.RFS RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.RFS RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.HM RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.HM RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.MATERIAL RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.MATERIAL RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.LABOUR RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.LABOUR RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.TOOLS RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.TOOLS RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.CLIST_TABLE RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.CLIST_TABLE RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.DOCUMENT_TABLE RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.DOCUMENT_TABLE RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.SFT_PROC RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.SFT_PROC RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.STD_PROC RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.STD_PROC RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.HM_EQP RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.HM_EQP RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.MATERIAL_EQP RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.MATERIAL_EQP RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.LABOUR_EQP RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.LABOUR_EQP RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.ISSUE_TO RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.ISSUE_TO RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : HSCROLL for WO_PLAN_DIN*158.EQUIPMENT RUN_EVENT calling:SYSPROG*..OIWIN* ... RUN_EVENT executing : VSCROLL for WO_PLAN_DIN*158.EQUIPMENT RUN_EVENT calling:SYSPROG*..OIWIN* ...
At 02 DEC 2021 09:41AM Brad Haughn wrote:
So I solved the slowdown and learned some things doing so.
I solved the slowdown by removing all HSCROLL and VSCROLL events from all edittables on the screen in question, and will proceed to do the same for all windows.
We call a hook program for most events on edittables and though we aren't doing anything presently for some of those events (including HSCROLL and VSCROLL), there being a quick event for HSCOLL and VSCROLL was causing many unnecessary calls to be added to the queue. Tested this by also making a blank scripted event on HSCROLL on a new edittable with no other events or settings, and it too was queued multiple times.
It *seems* to call these events when the window is created, when the window is moved, when the window size changes, if the window visible status changes, or if the window loses focus. We start the window invisible, change its position (with a size set), and its visibility (with the size set). When we watched, we believe this accounted for 3 HSCROLL and VSCROLL events for every edittable on the screen that had those hook calls (19 ish? edittables). When we went to turn off the event spy we would see additional calls to those events on all edittables when the window lost focus as well.
So I removed all the HSCOLL and VSCROLL quick events and the screen improved its speed from taking about 5 seconds to load, to about 1-2. And because they were just hook calls, we are just going to remove them from all screens and deal with consequences later if we ever need to use those hooks again.