Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions libvisual/tools/lv-tool/display/sdl_driver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -285,8 +285,6 @@ namespace {
visual_event_queue_add (&eventqueue,
visual_event_new_resize (event.resize.w,
event.resize.h));

create (m_display.get_video ()->get_depth (), nullptr, event.resize.w, event.resize.h, m_resizable);
break;

case SDL_MOUSEMOTION:
Expand Down
2 changes: 0 additions & 2 deletions libvisual/tools/lv-tool/display/stdout_sdl_driver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -330,8 +330,6 @@ namespace {
visual_event_queue_add (&eventqueue,
visual_event_new_resize (event.resize.w,
event.resize.h));

create (m_display.get_video ()->get_depth (), nullptr, event.resize.w, event.resize.h, m_resizable);
break;

case SDL_MOUSEMOTION:
Expand Down
67 changes: 56 additions & 11 deletions libvisual/tools/lv-tool/lv-tool.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,45 @@ namespace {
}
};

class ResizeRequest
{
public:
ResizeRequest()
: m_width {0}
, m_height {0}
{}

@kaixiong kaixiong Feb 6, 2023 •

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use uniform (brace) initialization and have each member variable on its own line:

ResizeRequest()
    : m_width {0}
    , m_height {0}
{}

unsigned int get_width() const { return m_width; }
unsigned int get_height() const { return m_height; }

bool is_due() const
{
if (m_applied_at >= m_received_at) {
return false;
}
const double seconds_passed = (LV::Time::now() - m_received_at).to_secs();
return seconds_passed >= 0.2; // >=300ms is known to feel slow to humans
}

void store(unsigned int width, unsigned int height)
{
m_width = width;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Opening brace for function bodies should be in a new line.

m_height = height;
m_received_at = LV::Time::now();
}

void mark_as_applied()
{
m_applied_at = LV::Time::now();

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Opening brace for function bodies should be in a new line.

}

private:
unsigned int m_width;
unsigned int m_height;
LV::Time m_received_at;
LV::Time m_applied_at;
};

/** print info about libvisual plugin */
void print_plugin_info(VisPluginInfo const& info)
{
Expand Down Expand Up @@ -543,6 +582,7 @@ int main (int argc, char **argv)

// main loop
bool running = true;
ResizeRequest resize_request;
//bool visible = true;

while (running)
Expand Down Expand Up @@ -611,17 +651,7 @@ int main (int argc, char **argv)

case VISUAL_EVENT_RESIZE:
{
DisplayLock lock {display};

width = ev.event.resize.width;
height = ev.event.resize.height;

video = display.create(depth, vidoptions, width, height, true);
display.set_title(_("lv-tool"));

bin.set_video (video);
bin.sync(false);

resize_request.store(ev.event.resize.width, ev.event.resize.height);
break;
}

Expand Down Expand Up @@ -699,6 +729,21 @@ int main (int argc, char **argv)
}
}

if (resize_request.is_due ()) {
DisplayLock lock {display};

width = resize_request.get_width();
height = resize_request.get_height();

video = display.create(depth, vidoptions, width, height, true);
display.set_title(_("lv-tool"));

bin.set_video (video);
bin.sync(false);

resize_request.mark_as_applied();
}

if (bin.depth_changed())
{
DisplayLock lock {display};
Expand Down