Summary: | [README] Memory View does not scroll properly on Linux | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Product: | [Eclipse Project] Platform | Reporter: | Samantha Chan <chanskw> | ||||||||||||
Component: | Debug | Assignee: | Darin Wright <darin.eclipse> | ||||||||||||
Status: | VERIFIED FIXED | QA Contact: | |||||||||||||
Severity: | major | ||||||||||||||
Priority: | P3 | CC: | boxall, darin.eclipse, John_Wiegand, jonah | ||||||||||||
Version: | 3.0 | ||||||||||||||
Target Milestone: | 3.1 M5 | ||||||||||||||
Hardware: | PC | ||||||||||||||
OS: | Linux | ||||||||||||||
Whiteboard: | |||||||||||||||
Bug Depends on: | 74739, 81264 | ||||||||||||||
Bug Blocks: | |||||||||||||||
Attachments: |
|
Description
Samantha Chan
2004-09-22 10:57:34 EDT
Running Redhat Enterprise Edition 3, GTK Sorry... marked the wrong bug, this bug depends on 74739 instead. Samantha, is this actually a bug in the memory view, or a duplicate of bug 74739? The Memory View is not working properly on Linux because I am not getting the correct value of top index from the table. If there is no way of getting around the problem, I will have to put some fixes in the Memory View to make it work properly. Created attachment 16951 [details]
patch to org.eclipse.debug.ui
I have implemented the workaround as suggested by the SWT Team.
The only side effect to the workaround is that sometimes the Memory View does
not resize properly. The view has to be closed and reopened in order to get
around the problem.
The workaround provided marked improvements for the Memory View on Linux GTK.
The view no longer runs into infinite loops. The user is now able to scroll
the memory view to look at different sections from the memory block.
The patch included a linuxWorkAround function from MemoryViewUtil. The
workaround is to run an event loop and dispatch all events currently queued on
the UI Thread. The event loop is only run if Eclipse is running on Linux GTK.
So other platforms are not affected by the workaround. The event loop is run
whenever the memory view tab sets or gets the top index from the table. It
ensures that the top index returned by the table is correct.
Outstanding problem on Linux GTK:
* The table may move to a different top address unexpectedly as the memory
block is updated.
* The table may move to a different top address unexpectedly as the user
changes the column size.
* The memory view does not resize properly. The event loop suggested by the
SWT Team caused the resize to fail.
Created attachment 16952 [details]
patch to org.eclipse.debug.ui
I have implemented the workaround as suggested by the SWT Team.
The only side effect to the workaround is that sometimes the Memory View does
not resize properly. The view has to be closed and reopened in order to get
around the problem.
The workaround provided marked improvements for the Memory View on Linux GTK.
The view no longer runs into infinite loops. The user is now able to scroll
the memory view to look at different sections from the memory block.
The patch included a linuxWorkAround function from MemoryViewUtil. The
workaround is to run an event loop and dispatch all events currently queued on
the UI Thread. The event loop is only run if Eclipse is running on Linux GTK.
So other platforms are not affected by the workaround. The event loop is run
whenever the memory view tab sets or gets the top index from the table. It
ensures that the top index returned by the table is correct.
Outstanding problem on Linux GTK:
* The table may move to a different top address unexpectedly as the memory
block is updated.
* The table may move to a different top address unexpectedly as the user
changes the column size.
* The memory view does not resize properly. The event loop suggested by the
SWT Team caused the resize to fail.
Applied patch. Verified. As requested by SWT Team, I have to remove the work-around for the Linux GTK problem. And there is no other work-around for the scrolling problems. I have to find a way to make sure the Memory View works reasonably well under Linux GTK. To allow users to work with the Memory View on Linux GTK, I propose to add a new preference to let users turn auto-loading on/off in table renderings. Auto- loading means that a table rendering will automatically load/ask for more memory from a debug target as the user scrolls and reaches the top or bottom of the table. (Auto loading in broken in the table rendering because the rendering cannot reliably determine the top index of the table nor can it set the table to a specific top index.) The proposed auto loading preference will be turned on by default on all platforms except for Linux GTK. If the auto loading preference is on, the rendering loads more memory automatically as the scrollbar reaches the top or bottom of the table. If the preference is off, the rendering does not automatically load more memory based on its scrollbar location. When the scrollbar reaches the top/bottom of the table, the user cannot continue to scroll. To get to next/previous segments of memory, the rendering provides two actions, Next Page and Previous Page. The Next Page action loads the next segment of memory into the view. Similarly, the Previous Page action loads the previous segment of memory into the view. There will also be a preference to allow user to configure the page size. Page size is the number of lines that the table rendering is supposed to monitor or load when the Memory View is in non-auto-loading mode. The fix is all internal and does not affect APIs. CC'ing John W for PMC approval. We want to add a feature to work around a bug on Linux GTK. The feature is a preference that disables auto-loading of memory segments from a debug target as the user scrolls in the memory view. The feature requires no public API. Without the feature, we would have to doc that the memory view does not work on Linux GTK. This is due to a bug in Linux GTK that is not yet fixed (see bug 74739, and comment 17), that SWT cannot work around. Created attachment 20803 [details]
patch to org.eclipse.debug.ui
* Added preference to turn auto-loading on / off
* Added preference to allow user to control the page size
* Added action in the Memory View to invoke the preference dialog
* Added Next Page & Prev Page actions to allow user to scroll
* Added new synchronization property (internal) to allow table renderings to
synchronize the address at the beginning of the page.
* Removed DefaultColumnSizeDialog and DefaultColumnSizePrefAction. The dialog
is grouped to the new preference page.
* Removed the Linux GTK workaround.
Created attachment 20804 [details]
patch to org.eclipse.jdt.doc.user
* Added F1 help for new actions and preference page.
* Removed F1 help for default column size dialog and action.
Darin - Please apply patch. Thanks... Samantha Created attachment 20805 [details]
patch to org.eclipse.debug.ui
Sorry... attached the wrong patch...
Applied patches. Verified. Hi Darin - We also need a readme item for Linux that the Memory View does not scroll properly if auto-scroll is turned on. Thanks... Samantha *** Bug 579212 has been marked as a duplicate of this bug. *** |