[vte] lib: Use bitset to store pending change flags
- From: Christian Persch <chpe src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vte] lib: Use bitset to store pending change flags
- Date: Thu, 12 Nov 2020 20:37:26 +0000 (UTC)
commit 2dbe5d478ccadfe182e29856ebedd0370053173b
Author: Christian Persch <chpe src gnome org>
Date: Thu Nov 12 21:37:16 2020 +0100
lib: Use bitset to store pending change flags
src/vte.cc | 11 +++++------
src/vteinternal.hh | 10 +++++++---
src/vteseq.cc | 10 +++++-----
3 files changed, 17 insertions(+), 14 deletions(-)
---
diff --git a/src/vte.cc b/src/vte.cc
index 87fb808c..46fe5ef4 100644
--- a/src/vte.cc
+++ b/src/vte.cc
@@ -10124,7 +10124,7 @@ Terminal::emit_pending_signals()
emit_adjustment_changed();
- if (m_window_title_changed) {
+ if (m_pending_changes & vte::to_integral(PendingChanges::TITLE)) {
if (m_window_title != m_window_title_pending) {
m_window_title.swap(m_window_title_pending);
@@ -10135,10 +10135,9 @@ Terminal::emit_pending_signals()
}
m_window_title_pending.clear();
- m_window_title_changed = false;
}
- if (m_current_directory_uri_changed) {
+ if (m_pending_changes & vte::to_integral(PendingChanges::CWD)) {
if (m_current_directory_uri != m_current_directory_uri_pending) {
m_current_directory_uri.swap(m_current_directory_uri_pending);
@@ -10149,10 +10148,9 @@ Terminal::emit_pending_signals()
}
m_current_directory_uri_pending.clear();
- m_current_directory_uri_changed = false;
}
- if (m_current_file_uri_changed) {
+ if (m_pending_changes & vte::to_integral(PendingChanges::CWF)) {
if (m_current_file_uri != m_current_file_uri_pending) {
m_current_file_uri.swap(m_current_file_uri_pending);
@@ -10163,9 +10161,10 @@ Terminal::emit_pending_signals()
}
m_current_file_uri_pending.clear();
- m_current_file_uri_changed = false;
}
+ m_pending_changes = 0;
+
/* Flush any pending "inserted" signals. */
if (m_cursor_moved_pending) {
diff --git a/src/vteinternal.hh b/src/vteinternal.hh
index f9db1f2a..ac7c8654 100644
--- a/src/vteinternal.hh
+++ b/src/vteinternal.hh
@@ -650,12 +650,16 @@ public:
std::string m_window_title_pending{};
std::string m_current_directory_uri_pending{};
std::string m_current_file_uri_pending{};
- bool m_window_title_changed{false};
- bool m_current_directory_uri_changed{false};
- bool m_current_file_uri_changed{false};
std::vector<std::string> m_window_title_stack{};
+ enum class PendingChanges {
+ TITLE = 1u << 0,
+ CWD = 1u << 1,
+ CWF = 1u << 2,
+ };
+ unsigned m_pending_changes{0};
+
/* Background */
double m_background_alpha{1.};
diff --git a/src/vteseq.cc b/src/vteseq.cc
index ac9c4993..3590aae0 100644
--- a/src/vteseq.cc
+++ b/src/vteseq.cc
@@ -1570,7 +1570,7 @@ Terminal::set_current_directory_uri(vte::parser::Sequence const& seq,
}
m_current_directory_uri_pending.swap(uri);
- m_current_directory_uri_changed = true;
+ m_pending_changes |= vte::to_integral(PendingChanges::CWD);
}
void
@@ -1593,7 +1593,7 @@ Terminal::set_current_file_uri(vte::parser::Sequence const& seq,
}
m_current_file_uri_pending.swap(uri);
- m_current_file_uri_changed = true;
+ m_pending_changes |= vte::to_integral(PendingChanges::CWF);
}
void
@@ -6570,7 +6570,7 @@ Terminal::OSC(vte::parser::Sequence const& seq)
it.size_remaining() < VTE_WINDOW_TITLE_MAX_LENGTH)
title = it.string_remaining();
m_window_title_pending.swap(title);
- m_window_title_changed = true;
+ m_pending_changes |= vte::to_integral(PendingChanges::TITLE);
break;
}
@@ -9064,7 +9064,7 @@ Terminal::XTERM_WM(vte::parser::Sequence const& seq)
m_window_title_stack.erase(m_window_title_stack.cbegin());
}
- if (m_window_title_changed)
+ if (m_pending_changes & vte::to_integral(PendingChanges::TITLE))
m_window_title_stack.emplace(m_window_title_stack.cend(),
m_window_title_pending);
else
@@ -9088,7 +9088,7 @@ Terminal::XTERM_WM(vte::parser::Sequence const& seq)
if (m_window_title_stack.empty())
break;
- m_window_title_changed = true;
+ m_pending_changes |= vte::to_integral(PendingChanges::TITLE);
m_window_title_pending.swap(m_window_title_stack.back());
m_window_title_stack.pop_back();
break;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]