View Issue Details

IDProjectCategoryView StatusLast Update
0001114OpenMPT[All Projects] User Interfacepublic2018-04-18 14:43
ReportermanxAssigned To 
PrioritynormalSeverityminorReproducibilityhave not tried
Status newResolutionopen 
Product Version 
Target VersionOpenMPT 1.?? (long term goals)Fixed in Version 
Summary0001114: Rewrite pattern view drawing

Pattern view is currently drawn using our own paletted bitmap drawing functionality, ultimately blitting to GDI without any caching of the drawn pattern.

Scrolling is handled via ScrollWindow (or redrawing the whole the hole thing for platforms or settings where this will cause problems, like Wine).

This whole thing probably needs a more or less complete rewrite or refactoring.

There are multiple ways to rewrite it:

  • custom paletted bitmap with a cache buffer
  • plain GDI immediate mode
  • plain GDI with a cache buffer
  • GDI+ immediate mode
  • GDI+ with a cache buffer
  • Direct2D immediate mode (although possible, it probably does not make sense to target a cache buffer with Direct2D)

GDI+ can be used safely and unconditionally. It is supported on all platforms we support.

Direct2D has the advantage of being GPU-accelerated, especially on Windows 8 or later. We still need to provide a fallback for situations without Direct2D acceleration (where it would be slow) though.

All things considered, it is probably the best idea to abstract the actual rendering backend. We currently already kind of have such an abstraction in place in the form of CFastBitmap. It probably needs a lot of changes to its interface to be really usable as a true abstraction layer though.

TagsNo tags attached.
Has the bug occurred in previous versions?
Tested code revision (in case you know it)


related to 0001071 assignedmanx Playback Row cursor disappears on high latency 
related to 0000627 assignedSaga Musix Make OpenMPT completely DPI-aware 
related to 0001003 confirmed Pattern View :: Smoothscrolling enabled :: displays artifacts 
related to 0000522 resolvedmanx Playback Cursor always jitters when you run it under Wine 1.7 
related to 0001024 new Relics When Navigating to Next Pattern 


There are no notes attached to this issue.

Issue History

Date Modified Username Field Change
2018-04-15 17:24 manx New Issue
2018-04-15 17:24 manx Relationship added related to 0001071
2018-04-15 17:25 manx Relationship added related to 0000627
2018-04-15 17:25 manx Relationship added related to 0001003
2018-04-15 17:25 manx Relationship added related to 0000522
2018-04-18 14:43 Saga Musix Relationship added related to 0001024