core: reserve vector sizes as much as we can (#9118)

avoid reallocations as much as possible with a few edge cases where the
reservation overshoots a tiny bit. but a few bytes of memory short term
is better used then the overhead of potential reallocation.
This commit is contained in:
Tom Englund 2025-01-19 10:38:42 +00:00 committed by GitHub
parent f56153a9c1
commit 4da9b7cc5b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 45 additions and 12 deletions

View file

@ -75,6 +75,8 @@ void CX11DataDevice::sendEnter(uint32_t serial, SP<CWLSurfaceResource> surf, con
data.data32[1] |= 1;
std::vector<xcb_atom_t> targets;
// reserve to avoid reallocations
targets.reserve(SOURCE->mimes().size());
for (auto& mime : SOURCE->mimes()) {
targets.emplace_back(g_pXWayland->pWM->mimeToAtom(mime));

View file

@ -643,6 +643,8 @@ void CXWM::handleSelectionRequest(xcb_selection_request_event_t* e) {
Debug::log(WARN, "[xwm] WARNING: No mimes in TARGETS?");
std::vector<xcb_atom_t> atoms;
// reserve to avoid reallocations
atoms.reserve(mimes.size() + 2);
atoms.push_back(HYPRATOMS["TIMESTAMP"]);
atoms.push_back(HYPRATOMS["TARGETS"]);
@ -989,6 +991,8 @@ void CXWM::sendState(SP<CXWaylandSurface> surf) {
}
std::vector<uint32_t> props;
// reserve to avoid reallocations
props.reserve(6); // props below
if (surf->modal)
props.push_back(HYPRATOMS["_NET_WM_STATE_MODAL"]);
if (surf->fullscreen)