summaryrefslogtreecommitdiff
path: root/Servers
diff options
context:
space:
mode:
authorAndreas Kling <kling@serenityos.org>2020-04-07 22:15:22 +0200
committerAndreas Kling <kling@serenityos.org>2020-04-07 23:01:43 +0200
commita53cf813748927ed03a862be847769a58453950b (patch)
treed6aa283b0f18642de86e155bed4443dbca649987 /Servers
parentf813041f67daa7a17197dee27ba5ed3fa2421235 (diff)
downloadserenity-a53cf813748927ed03a862be847769a58453950b.zip
LibCore: Add Core::Timer::create_single_shot()
This is just a convenience function for creating single-shot timers.
Diffstat (limited to 'Servers')
-rw-r--r--Servers/DHCPClient/DHCPv4Client.cpp16
-rw-r--r--Servers/WindowServer/Compositor.cpp35
2 files changed, 22 insertions, 29 deletions
diff --git a/Servers/DHCPClient/DHCPv4Client.cpp b/Servers/DHCPClient/DHCPv4Client.cpp
index 6161d02bf3..918a20b93f 100644
--- a/Servers/DHCPClient/DHCPv4Client.cpp
+++ b/Servers/DHCPClient/DHCPv4Client.cpp
@@ -165,14 +165,14 @@ void DHCPv4Client::handle_ack(const DHCPv4Packet& packet, const ParsedDHCPv4Opti
auto new_ip = packet.yiaddr();
auto lease_time = convert_between_host_and_network(options.get<u32>(DHCPOption::IPAddressLeaseTime).value_or(transaction->offered_lease_time));
// set a timer for the duration of the lease, we shall renew if needed
- Core::Timer::construct(
- lease_time * 1000, [this, transaction, interface = InterfaceDescriptor { interface }, new_ip] {
+ Core::Timer::create_single_shot(
+ lease_time * 1000,
+ [this, transaction, interface = InterfaceDescriptor { interface }, new_ip] {
transaction->accepted_offer = false;
transaction->has_ip = false;
dhcp_discover(interface, new_ip);
},
- this)
- ->set_single_shot(true);
+ this);
set_params(transaction->interface, new_ip, options.get<IPv4Address>(DHCPOption::SubnetMask).value(), options.get_many<IPv4Address>(DHCPOption::Router, 1).first());
}
@@ -189,12 +189,12 @@ void DHCPv4Client::handle_nak(const DHCPv4Packet& packet, const ParsedDHCPv4Opti
transaction->accepted_offer = false;
transaction->has_ip = false;
auto& iface = transaction->interface;
- Core::Timer::construct(
- 10000, [this, iface = InterfaceDescriptor { iface }] {
+ Core::Timer::create_single_shot(
+ 10000,
+ [this, iface = InterfaceDescriptor { iface }] {
dhcp_discover(iface);
},
- this)
- ->set_single_shot(true);
+ this);
}
void DHCPv4Client::process_incoming(const DHCPv4Packet& packet)
diff --git a/Servers/WindowServer/Compositor.cpp b/Servers/WindowServer/Compositor.cpp
index 0a0ab29f1d..76526bb18f 100644
--- a/Servers/WindowServer/Compositor.cpp
+++ b/Servers/WindowServer/Compositor.cpp
@@ -62,30 +62,23 @@ WallpaperMode mode_to_enum(const String& name)
Compositor::Compositor()
{
- m_compose_timer = add<Core::Timer>();
- m_immediate_compose_timer = add<Core::Timer>();
+ m_compose_timer = Core::Timer::create_single_shot(
+ 1000 / 60,
+ [this] {
+ notify_display_links();
+ compose();
+ },
+ this);
- m_screen_can_set_buffer = Screen::the().can_set_buffer();
+ m_immediate_compose_timer = Core::Timer::create_single_shot(
+ 0,
+ [this] {
+ compose();
+ },
+ this);
+ m_screen_can_set_buffer = Screen::the().can_set_buffer();
init_bitmaps();
-
- m_compose_timer->on_timeout = [&]() {
- notify_display_links();
-#if defined(COMPOSITOR_DEBUG)
- dbgprintf("Compositor: delayed frame callback: %d rects\n", m_dirty_rects.size());
-#endif
- compose();
- };
- m_compose_timer->set_single_shot(true);
- m_compose_timer->set_interval(1000 / 60);
- m_immediate_compose_timer->on_timeout = [this]() {
-#if defined(COMPOSITOR_DEBUG)
- dbgprintf("Compositor: immediate frame callback: %d rects\n", m_dirty_rects.size());
-#endif
- compose();
- };
- m_immediate_compose_timer->set_single_shot(true);
- m_immediate_compose_timer->set_interval(0);
}
void Compositor::init_bitmaps()