mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-11-01 05:37:23 -06:00
Open: the opening thread also reads linked files and lays out type
When the desktop app opened a document on a thread of its own, that thread parsed it, but open_read, which the app ran on the UI thread, read the document's linked files, decoding BMP, PSD and RGB TIFF files and storing them again as PNG, and laid out the type. In release builds, a document with 12 linked 3000 x 2000 TIFFs kept the UI thread busy for 1.04 s, and one with 300 Auto Size area type objects, every second one in three columns, kept it busy for 0.85 s. read_for_open now reads the linked files and lays out the type on the opening thread, with the path and the Update Links preference that opening::start passes it, and open_read only adds the finished document. open_read now takes 0.02 ms and 0.1 ms on those documents. For the measured documents, the opened documents, results and undo states are the same as on main. Docs: docs/target-app-parity.md.
This commit is contained in:
@@ -1223,7 +1223,7 @@ impl Session {
|
||||
}
|
||||
/// Text layout bounds are a cache (not saved): compute them for a document just read, or
|
||||
/// selection boxes and hit testing would use the rough estimate until each text is edited.
|
||||
fn refresh_text_bounds(doc: &mut Document) {
|
||||
pub(crate) fn refresh_text_bounds(doc: &mut Document) {
|
||||
// Inline graphics in text take their size from their symbols' art (not saved either).
|
||||
doc.resolve_inline_art();
|
||||
let mut texts = vec![];
|
||||
|
||||
Reference in New Issue
Block a user