Drawing the list of channels on the left side of VSE timeline was taking surprisingly long time (3.5ms in Sprite Fright Edit v135 on Mac M1 Max). This PR makes them draw in 0.4ms, i.e. 10x faster, by doing two things: - Stop "search through the whole timeline" work whenever we need to know which meta strip (if any) owns some VSE channel. Remember that info in the "sequence lookup" that already holds data to speedup similar queries (sequence by name, meta by sequence). I.e. this gains "channel owner by channel" query hashtable. - Stop alternating between "regular font glyph cache" and "svg icons glyph cache" on each channel row, which incurs a draw call / UI batch flush. Instead, draw all the lock/mute widgets first, then all the channel names. While at it, simplify code related to sequence lookup: - Use C++ mutex with lock_guard - Use BLI Map instead of GHash - Simplify SEQ_sequence_lookup_tag to just SEQ_sequence_lookup_invalidate - Remove unused SEQ_get_meta_by_seqbase and SEQ_query_all_meta_strips_recursive Pull Request: https://projects.blender.org/blender/blender/pulls/127913
16 lines
303 B
C++
16 lines
303 B
C++
/* SPDX-FileCopyrightText: 2004 Blender Authors
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
|
|
#pragma once
|
|
|
|
/** \file
|
|
* \ingroup sequencer
|
|
*/
|
|
|
|
struct ListBase;
|
|
struct Scene;
|
|
|
|
bool sequencer_seq_generates_image(Sequence *seq);
|
|
void seq_open_anim_file(Scene *scene, Sequence *seq, bool openfile);
|