summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoreric_tian <eric_tian@6f19259b-4bc3-4df7-8a09-765794883524>2008-04-22 09:11:43 +0000
committereric_tian <eric_tian@6f19259b-4bc3-4df7-8a09-765794883524>2008-04-22 09:11:43 +0000
commit0ce1dd70a9d2b70fbedaefb1ba9d664b8a7bb4ef (patch)
tree038e40d896b14717854ca824aefc72958137f567
parent152af594ccbbc581f3c807b609d4ff53dc47f64e (diff)
downloadedk2-platforms-0ce1dd70a9d2b70fbedaefb1ba9d664b8a7bb4ef.tar.xz
[Description]
add a judgement of whether the control command is equal with previous one or not. [Impaction] Judge if the control command is equaled with previous one. This handler can improve performance. [Reference Info] Currently the terminal driver outputs control commands upon user's request regardless of whether the new attribute is the same as previous one or not. Actually, it could be implemented as only outputting control command when the new Attribute is different than previous one git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5113 6f19259b-4bc3-4df7-8a09-765794883524
-rw-r--r--MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitter.c2
-rw-r--r--MdeModulePkg/Universal/Console/TerminalDxe/TerminalConOut.c11
2 files changed, 11 insertions, 2 deletions
diff --git a/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitter.c b/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitter.c
index a6fecb8772..88274b117a 100644
--- a/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitter.c
+++ b/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitter.c
@@ -4384,7 +4384,7 @@ ConSplitterTextOutReset (
}
}
- This->SetAttribute (This, EFI_TEXT_ATTR (This->Mode->Attribute & 0x0F, EFI_BACKGROUND_BLACK));
+ This->SetAttribute (This, EFI_TEXT_ATTR (This->Mode->Attribute & 0x0F, EFI_BLACK));
Status = DevNullTextOutSetMode (Private, 0);
if (EFI_ERROR (Status)) {
diff --git a/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConOut.c b/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConOut.c
index 65fbfc1ef4..06fda61274 100644
--- a/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConOut.c
+++ b/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConOut.c
@@ -150,7 +150,7 @@ TerminalConOutReset (
}
}
- This->SetAttribute (This, EFI_TEXT_ATTR (This->Mode->Attribute & 0x0F, EFI_BACKGROUND_BLACK));
+ This->SetAttribute (This, EFI_TEXT_ATTR (This->Mode->Attribute & 0x0F, EFI_BLACK));
Status = This->SetMode (This, 0);
@@ -605,6 +605,15 @@ TerminalConOutSetAttribute (
if ((Attribute | 0x7f) != 0x7f) {
return EFI_UNSUPPORTED;
}
+
+ //
+ // Skip outputting the command string for the same attribute
+ // It improves the terminal performance siginificantly
+ //
+ if (This->Mode->Attribute == (INT32) Attribute) {
+ return EFI_SUCCESS;
+ }
+
//
// convert Attribute value to terminal emulator
// understandable foreground color