Skip to content

Commit 3652958

Browse files
committed
Defer cost of OSD tab font glyph render from tab initialization to time-of-use (cuts tab load time to roughly 1/3 of previous).
1 parent 1809bb8 commit 3652958

File tree

2 files changed

+13
-5
lines changed

2 files changed

+13
-5
lines changed

src/js/LogoManager.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ LogoManager.replaceLogoInFont = function (img) {
290290
LogoManager.drawPreview = function () {
291291
const $el = this.elements.$preview.empty();
292292
for (let i = this.logoStartIndex, I = this.font.constants.MAX_CHAR_COUNT; i < I; i++) {
293-
const url = this.font.data.character_image_urls[i];
293+
const url = this.font.draw(i);
294294
$el.append(`<img src="${url}" title="0x${i.toString(16)}"></img>`);
295295
}
296296
};

src/js/tabs/osd.js

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,6 @@ FONT.pushChar = function (fontCharacterBytes, fontCharacterBits) {
130130
}
131131
FONT.data.characters_bytes.push(fontCharacterBytes.slice(0));
132132
FONT.data.characters.push(fontCharacterBits.slice(0));
133-
FONT.draw(FONT.data.characters.length - 1);
134133
};
135134

136135
/**
@@ -262,7 +261,7 @@ FONT.upload = function ($progress) {
262261
FONT.preview = function ($el) {
263262
$el.empty();
264263
for (let i = 0; i < SYM.LOGO; i++) {
265-
const url = FONT.data.character_image_urls[i];
264+
const url = FONT.draw(i);
266265
$el.append(`<img src="${url}" title="0x${i.toString(16)}"></img>`);
267266
}
268267
};
@@ -2769,6 +2768,10 @@ osd.initialize = function (callback) {
27692768
attach: $("#fontmanager"),
27702769
title: "OSD Font Manager",
27712770
content: $("#fontmanagercontent"),
2771+
onCreated: () => {
2772+
FONT.preview(fontPreviewElement);
2773+
LogoManager.drawPreview();
2774+
},
27722775
});
27732776

27742777
$(".elements-container div.cf_tip").attr("title", i18n.getMessage("osdSectionHelpElements"));
@@ -3499,15 +3502,20 @@ osd.initialize = function (callback) {
34993502
// init structs once, also clears current font
35003503
FONT.initData();
35013504

3505+
let fontPreviewNeedsReload = false;
35023506
fontPresetsElement.change(function () {
35033507
const $font = $(".fontpresets option:selected");
35043508
const fontver = 2;
35053509

35063510
$(".font-manager-version-info").text(i18n.getMessage(`osdDescribeFontVersion${fontver}`));
35073511
$.get(`./resources/osd/${fontver}/${$font.data("font-file")}.mcm`, function (data) {
35083512
FONT.parseMCMFontFile(data);
3509-
FONT.preview(fontPreviewElement);
3510-
LogoManager.drawPreview();
3513+
if (fontPreviewNeedsReload) {
3514+
FONT.preview(fontPreviewElement);
3515+
LogoManager.drawPreview();
3516+
} else {
3517+
fontPreviewNeedsReload = true;
3518+
}
35113519
updateOsdView();
35123520
$(".fontpresets option[value=-1]").hide();
35133521
});

0 commit comments

Comments
 (0)