Opened 16 years ago

Last modified 16 years ago

#53 assigned enhancement

Improve TrackWidget performance and LnF

Reported by: Henrik Heimbuerger Owned by: nobody
Priority: minor Milestone: MS4: Future extensions
Component: track Version: pre-1.0
Keywords: Cc:

Description (last modified by Henrik Heimbuerger)

Catch-all ticket for various TrackWidget enhancements, including performance and quality improvements and enhancements of the look&feel.

Attachments (1)

mylyn-context.zip (17.3 KB) - added by Henrik Heimbuerger 16 years ago.
mylyn/context/zip

Download all attachments as: .zip

Change History (20)

comment:1 Changed 16 years ago by Henrik Heimbuerger

Description: modified (diff)
Owner: changed from somebody to Henrik Heimbuerger
Status: newaccepted

comment:2 Changed 16 years ago by SVN

New commit by hheimbuerger (revision [183]):
[Partial fix for ticket #53] Improved TrackWidget selection visualization.

The ugly rectangle surrounding the currently selected tile of the TrackWidget has been removed and replaced by a transformation of the actual tile image.

The GrayscalableImage has been transformed into a more general purpose MultiStyleImage that gives access to various modifications of the image while caching the (often very computation-intensive) results.

Two of the debug tile images were palette based and have been converted to 24-bit bitmaps.

comment:3 Changed 16 years ago by Henrik Heimbuerger

Status: acceptedassigned

comment:4 Changed 16 years ago by SVN

New commit by hheimbuerger (revision [194]):
[Fix for ticket #56, partial fix for ticket #53] Fixed NullPointerException during scrolling.

I'm not entirely sure which race condition caused this, but in certain situations a NullPointerException was thrown when moving the cursor away from an inner TrackWidget control while holding it. It was somehow caused by the timer thread for the TimerTask ClickEventRepetitionHandler communicating with the event dispatcher thread over the field hoveredInnerControl. This problem was worked around by passing the current hoveredInnerControl into the ClickEventRepetitionHandler during construction. The ClickEventRepetitionHandler only works on its own state now and in the worst case invokes the requested change once more while the mouse button has already been released.

During investigation, another bug was found that caused the inner control clicks to be also checked for track section selections. That has been fixed, clicks on inner controls now have priority and the track selection change is only evaluated if no inner control click could be detected.

Additionally, the scrollers' click detection shape is now a little larger, making it easier to hit them. The previous shape was more exact (having the same shape as the scroller), but also did not take the brush width into account.

comment:5 Changed 16 years ago by Henrik Heimbuerger

Cc: Henrik Heimbuerger added

comment:6 Changed 16 years ago by Henrik Heimbuerger

Cc: Henrik Heimbuerger removed

comment:7 Changed 16 years ago by Henrik Heimbuerger

Component: unspecifiedtrack

comment:8 Changed 16 years ago by SVN

New commit by hheimbuerger (revision [274]):
[Partial fix for ticket #53] The TrackWidget now draws the thrust gauges for the actual players.

The TrackWidget previously drew thrust gauges for all connected input devices, now it draws one for each player that isn't a driving agent. Also, the displayed names are now the player names and no longer the device names.

comment:9 Changed 16 years ago by SVN

New commit by hheimbuerger (revision [380]):
[Partial fix for ticket #53] Improved TrackWidget performance when unzoomed and not rotated.

The track is image is now cached and the cars are drawn on top of it. This increases performance immensely. However, zooming and rotating is still done every frame and causes bad performance.

comment:10 Changed 16 years ago by SVN

New commit by hheimbuerger (revision [382]):
[Partial fix for ticket #53] Fixed selecting track tiles and editing tracks (broken from the last change).

The track cache is now cleared when the track is modified or a selection is performed.

comment:11 Changed 16 years ago by SVN

New commit by hheimbuerger (revision [383]):
[Partial fix for ticket #53] After changing the current track of the TrackWidget, the off-screen buffer size was not reset.

comment:12 Changed 16 years ago by SVN

New commit by hheimbuerger (revision [411]):
[Partial fix for ticket #125, related to ticket #53] Redraws are no longer triggered if the TrackWidget isn't already idle.

Before pushing a new redraw event to the event queue, the TrackWidget now checks whether it's already working on a frame. That should reduce the problem of the refresh events for the LapView not getting through. (In the latest tests, it still took up to 2s, unfortunately.)

The dropped frames are shown on the frame counter.

comment:13 Changed 16 years ago by SVN

New commit by hheimbuerger (revision [420]):
[Partial fix for ticket #53] Overhauled various aspects of the TrackWidget.

comment:14 Changed 16 years ago by SVN

New commit by hheimbuerger (revision [421]):
[Partial fix for ticket #53] Fixed jump of the pan position during the initial redraw.

comment:15 Changed 16 years ago by Henrik Heimbuerger

Milestone: MS5: Optional extensionsMS1: First usable version

To do: make the rendering quality configurable in the preferences. Then reassign to MS5.

comment:16 Changed 16 years ago by SVN

New commit by hheimbuerger (revision [438]):
[Partial fix for ticket #53] The rendering quality/performance settings are now configurable via the preferences.

comment:17 Changed 16 years ago by SVN

New commit by hheimbuerger (revision [439]):
[Partial fix for ticket #53] Fixed bug with mouse exit event not triggering a redraw and now removing preference change listener on dispose.

comment:18 Changed 16 years ago by Henrik Heimbuerger

Milestone: MS1: First usable versionMS5: Optional extensions
Owner: changed from Henrik Heimbuerger to nobody

Rendering quality is now configurable, assigning back to MS5.

Changed 16 years ago by Henrik Heimbuerger

Attachment: mylyn-context.zip added

mylyn/context/zip

comment:19 Changed 16 years ago by Henrik Heimbuerger

latest context, last used for making the rendering quality settings configurable

Note: See TracTickets for help on using tickets.