mickleness / pumpernickel

This Java project includes classes related to desktop applications, Swing, performance, image processing, data structures, and other misc topics.
https://mickleness.github.io/pumpernickel/
MIT License
66 stars 12 forks source link

Showcase: ComboBox Rendering in Profiler #104

Closed mickleness closed 1 year ago

mickleness commented 1 year ago

When I had the Transition2D page up, the profiler kept reporting a (temporarily) blocked EDT:

-------- AWT-EventQueue-0, priority = 6, RUNNABLE=15.8%, WAITING=84.2%
100.0% java.awt.EventDispatchThread#run(EventDispatchThread.java:90)
95.0%   java.awt.EventDispatchThread#pumpEvents(EventDispatchThread.java:101)
95.0%    java.awt.EventDispatchThread#pumpEvents(EventDispatchThread.java:109)
95.0%     java.awt.EventDispatchThread#pumpEventsForHierarchy(EventDispatchThread.java:113)
95.0%      java.awt.EventDispatchThread#pumpEventsForFilter(EventDispatchThread.java:124)
95.0%       java.awt.EventDispatchThread#pumpOneEventForFilters(EventDispatchThread.java:203)
95.0%        java.awt.EventQueue#dispatchEvent(EventQueue.java:742)
95.0%         java.security.ProtectionDomain$JavaSecurityAccessImpl#doIntersectionPrivilege(ProtectionDomain.java:86)
95.0%          java.security.AccessController#doPrivileged(AccessController.java:399)
95.0%           java.security.AccessController#executePrivileged(AccessController.java:776)
95.0%            java.awt.EventQueue$4#run(EventQueue.java:714)
95.0%             java.awt.EventQueue$4#run(EventQueue.java:720)
95.0%              java.awt.EventQueue#dispatchEventImpl(EventQueue.java:773)
95.0%               java.awt.event.InvocationEvent#dispatch(InvocationEvent.java:-1)
95.0%                java.awt.event.InvocationEvent#dispatch$$$capture(InvocationEvent.java:318)
95.0%                 javax.swing.RepaintManager$ProcessingRunnable#run(RepaintManager.java:1897)
95.0%                  javax.swing.RepaintManager#prePaintDirtyRegions(RepaintManager.java:784)
95.0%                   javax.swing.RepaintManager#paintDirtyRegions(RepaintManager.java:834)
95.0%                    javax.swing.RepaintManager#paintDirtyRegions(RepaintManager.java:861)
95.0%                     java.security.ProtectionDomain$JavaSecurityAccessImpl#doIntersectionPrivilege(ProtectionDomain.java:86)
95.0%                      java.security.AccessController#doPrivileged(AccessController.java:399)
95.0%                       java.security.AccessController#executePrivileged(AccessController.java:776)
95.0%                        javax.swing.RepaintManager$4#run(RepaintManager.java:861)
95.0%                         javax.swing.RepaintManager$4#run(RepaintManager.java:878)
95.0%                          javax.swing.JComponent#paintImmediately(JComponent.java:5076)
95.0%                           javax.swing.JComponent#_paintImmediately(JComponent.java:5266)
95.0%                            javax.swing.RepaintManager#paint(RepaintManager.java:1336)
95.0%                             javax.swing.RepaintManager$PaintManager#paint(RepaintManager.java:1569)
95.0%                              javax.swing.RepaintManager$PaintManager#paintDoubleBuffered(RepaintManager.java:1631)
95.0%                               javax.swing.RepaintManager$PaintManager#paintDoubleBufferedImpl(RepaintManager.java:1656)
95.0%                                javax.swing.JComponent#paintToOffscreen(JComponent.java:5318)
90.0%                                 javax.swing.JComponent#paint(JComponent.java:1137)
90.0%                                  javax.swing.JComponent#paintChildren(JComponent.java:961)
90.0%                                   javax.swing.JLayeredPane#paint(JLayeredPane.java:586)
90.0%                                    javax.swing.JComponent#paint(JComponent.java:1137)
90.0%                                     javax.swing.JComponent#paintChildren(JComponent.java:961)
90.0%                                      javax.swing.JComponent#paint(JComponent.java:1137)
90.0%                                       javax.swing.JComponent#paintChildren(JComponent.java:961)
85.0%                                        javax.swing.JComponent#paint(JComponent.java:1137)
85.0%                                         javax.swing.JComponent#paintChildren(JComponent.java:961)
70.0%                                          javax.swing.JComponent#paint(JComponent.java:1128)
70.0%                                           javax.swing.JComponent#paintComponent(JComponent.java:852)
70.0%                                            javax.swing.plaf.ComponentUI#update(ComponentUI.java:161)
65.0%                                             com.pump.plaf.combobox.QComboBoxUI#paint(QComboBoxUI.java:460)
65.0%                                              com.pump.plaf.Background#paintBackgroundContents(Background.java:73)
65.0%                                               com.pump.plaf.Background#paintContents(Background.java:124)
65.0%                                                com.pump.plaf.button.QButtonUI$AbstractButtonBackground#paint(QButtonUI.java:286)
65.0%                                                 sun.java2d.SunGraphics2D#fill(SunGraphics2D.java:2531)
65.0%                                                  sun.java2d.pipe.ValidatePipe#fill(ValidatePipe.java:160)
65.0%                                                   sun.java2d.pipe.PixelToParallelogramConverter#fill(PixelToParallelogramConverter.java:164)
65.0%                                                    sun.java2d.pipe.AAShapePipe#fill(AAShapePipe.java:82)
65.0%                                                     sun.java2d.pipe.AAShapePipe#renderPath(AAShapePipe.java:149)
65.0%                                                      sun.java2d.pipe.AAShapePipe#renderTiles(AAShapePipe.java:201)
65.0%                                                       sun.java2d.pipe.AlphaPaintPipe#renderPathTile(AlphaPaintPipe.java:156)
65.0%                                                        sun.java2d.opengl.OGLSwToSurfaceBlit#Blit(OGLBlitLoops.java:636)
65.0%                                                         sun.java2d.opengl.OGLBlitLoops#Blit(OGLBlitLoops.java:296)
65.0%                                                          sun.java2d.opengl.OGLRenderQueue#flushNow(OGLRenderQueue.java:124)
65.0%                                                           sun.java2d.opengl.OGLRenderQueue$QueueFlusher#flushNow(OGLRenderQueue.java:179) (synchronized)
65.0%                                                            java.lang.Object#wait(Object.java:338)
65.0%                                                             java.lang.Object#wait(Object.java:-2)
mickleness commented 1 year ago

Closing as resolved; I switched from TexturePaints to LinearGradientPaints and (once the page is loaded) the profiler never complains about a sluggish EDT.