mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 22:12:44 +00:00 
			
		
		
		
	 9567e211e7
			
		
	
	
		9567e211e7
		
	
	
	
	
		
			
			Instead of using Core::EventLoop and Core::Timer directly, LibWeb now goes through a Web::Platform abstraction layer instead. This will allow us to plug in Qt's event loop (and QTimer) over in Ladybird, to avoid having to deal with multiple event loops.
		
			
				
	
	
		
			43 lines
		
	
	
	
		
			896 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
	
		
			896 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) 2020, Andreas Kling <kling@serenityos.org>
 | |
|  *
 | |
|  * SPDX-License-Identifier: BSD-2-Clause
 | |
|  */
 | |
| 
 | |
| #include <LibWeb/HTML/Timer.h>
 | |
| #include <LibWeb/HTML/Window.h>
 | |
| #include <LibWeb/Platform/Timer.h>
 | |
| 
 | |
| namespace Web::HTML {
 | |
| 
 | |
| JS::NonnullGCPtr<Timer> Timer::create(Window& window, i32 milliseconds, Function<void()> callback, i32 id)
 | |
| {
 | |
|     return *window.heap().allocate_without_realm<Timer>(window, milliseconds, move(callback), id);
 | |
| }
 | |
| 
 | |
| Timer::Timer(Window& window, i32 milliseconds, Function<void()> callback, i32 id)
 | |
|     : m_window(window)
 | |
|     , m_callback(move(callback))
 | |
|     , m_id(id)
 | |
| {
 | |
|     m_timer = Platform::Timer::create_single_shot(milliseconds, [this] {
 | |
|         m_callback();
 | |
|     });
 | |
| }
 | |
| 
 | |
| void Timer::visit_edges(Cell::Visitor& visitor)
 | |
| {
 | |
|     Base::visit_edges(visitor);
 | |
|     visitor.visit(m_window.ptr());
 | |
| }
 | |
| 
 | |
| Timer::~Timer()
 | |
| {
 | |
| }
 | |
| 
 | |
| void Timer::start()
 | |
| {
 | |
|     m_timer->start();
 | |
| }
 | |
| 
 | |
| }
 |