mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2025-12-09 08:15:09 +03:00
Extras: fixed concurrent loading of SVG icons on multiple threads (issue #459)
This commit is contained in:
@@ -17,6 +17,8 @@ FlatLaf Change Log
|
|||||||
- Improved hover/pressed/selected colors of leading/trailing buttons (e.g.
|
- Improved hover/pressed/selected colors of leading/trailing buttons (e.g.
|
||||||
"reveal" button in password field). (issue #452)
|
"reveal" button in password field). (issue #452)
|
||||||
- Clear button no longer paints over round border. (issue #451)
|
- Clear button no longer paints over round border. (issue #451)
|
||||||
|
- Extras: Fixed concurrent loading of SVG icons on multiple threads. (issue
|
||||||
|
#459)
|
||||||
|
|
||||||
|
|
||||||
## 2.0-rc1
|
## 2.0-rc1
|
||||||
|
|||||||
@@ -273,10 +273,12 @@ public class FlatSVGIcon
|
|||||||
// since the input stream is already loaded and parsed,
|
// since the input stream is already loaded and parsed,
|
||||||
// get diagram here and remove it from cache
|
// get diagram here and remove it from cache
|
||||||
update();
|
update();
|
||||||
svgCache.remove( uri );
|
synchronized( FlatSVGIcon.class ) {
|
||||||
|
svgCache.remove( uri );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static URI loadFromStream( InputStream in ) throws IOException {
|
private static synchronized URI loadFromStream( InputStream in ) throws IOException {
|
||||||
try( InputStream in2 = in ) {
|
try( InputStream in2 = in ) {
|
||||||
return svgUniverse.loadSVG( in2, "/flatlaf-stream-" + (streamNumber++) );
|
return svgUniverse.loadSVG( in2, "/flatlaf-stream-" + (streamNumber++) );
|
||||||
}
|
}
|
||||||
@@ -475,7 +477,7 @@ public class FlatSVGIcon
|
|||||||
loadFailed = (diagram == null);
|
loadFailed = (diagram == null);
|
||||||
}
|
}
|
||||||
|
|
||||||
static SVGDiagram loadSVG( URI uri ) {
|
static synchronized SVGDiagram loadSVG( URI uri ) {
|
||||||
// get from our cache
|
// get from our cache
|
||||||
SVGDiagram diagram = svgCache.get( uri );
|
SVGDiagram diagram = svgCache.get( uri );
|
||||||
if( diagram != null )
|
if( diagram != null )
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import javax.swing.SwingUtilities;
|
|||||||
import javax.swing.UIManager;
|
import javax.swing.UIManager;
|
||||||
import com.formdev.flatlaf.FlatClientProperties;
|
import com.formdev.flatlaf.FlatClientProperties;
|
||||||
import com.formdev.flatlaf.FlatLightLaf;
|
import com.formdev.flatlaf.FlatLightLaf;
|
||||||
|
import com.formdev.flatlaf.extras.FlatSVGIcon;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Karl Tauber
|
* @author Karl Tauber
|
||||||
@@ -57,6 +58,7 @@ public class FlatStressTest
|
|||||||
private JComponent createStressTest() {
|
private JComponent createStressTest() {
|
||||||
return createComboBoxStressTest();
|
return createComboBoxStressTest();
|
||||||
// return createGetFontStressTest();
|
// return createGetFontStressTest();
|
||||||
|
// return createSVGIconTest();
|
||||||
}
|
}
|
||||||
|
|
||||||
// for https://github.com/JFormDesigner/FlatLaf/issues/432
|
// for https://github.com/JFormDesigner/FlatLaf/issues/432
|
||||||
@@ -109,4 +111,31 @@ public class FlatStressTest
|
|||||||
|
|
||||||
return label;
|
return label;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// for https://github.com/JFormDesigner/FlatLaf/issues/459
|
||||||
|
@SuppressWarnings( "unused" )
|
||||||
|
private JComponent createSVGIconTest() {
|
||||||
|
JLabel label = new JLabel( "test" );
|
||||||
|
|
||||||
|
Runnable runnable = () -> {
|
||||||
|
for(;;) {
|
||||||
|
FlatSVGIcon icon = new FlatSVGIcon( "com/formdev/flatlaf/demo/icons/back.svg" );
|
||||||
|
icon.getIconHeight();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Thread thread1 = new Thread( runnable);
|
||||||
|
thread1.setDaemon( true );
|
||||||
|
thread1.start();
|
||||||
|
|
||||||
|
Thread thread2 = new Thread( runnable);
|
||||||
|
thread2.setDaemon( true );
|
||||||
|
thread2.start();
|
||||||
|
|
||||||
|
Thread thread3 = new Thread( runnable);
|
||||||
|
thread3.setDaemon( true );
|
||||||
|
thread3.start();
|
||||||
|
|
||||||
|
return label;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user