2
* Copyright (C) 2012 ProFUSION embedded systems. All rights reserved.
3
* Copyright (C) 2012 Samsung Electronics
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions
8
* 1. Redistributions of source code must retain the above copyright
9
* notice, this list of conditions and the following disclaimer.
10
* 2. Redistributions in binary form must reproduce the above copyright
11
* notice, this list of conditions and the following disclaimer in the
12
* documentation and/or other materials provided with the distribution.
14
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
15
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
16
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
17
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
18
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
19
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
20
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
#include <Ecore_Evas.h>
32
#include <Ecore_File.h>
34
#include <wtf/OwnPtr.h>
35
#include <wtf/PassOwnPtr.h>
37
static const int ecorePipeMessageSize = 1;
38
static const char wakupEcorePipeMessage[] = "W";
46
LOG_ERROR("could not init ecore.");
50
if (!ecore_evas_init()) {
51
LOG_ERROR("could not init ecore_evas.");
55
if (!ecore_file_init()) {
56
LOG_ERROR("could not init ecore_file.");
61
LOG_ERROR("could not init edje.");
65
m_pipe = adoptPtr(ecore_pipe_add(wakeUpEvent, this));
71
ecore_file_shutdown();
73
ecore_evas_shutdown();
82
ecore_file_shutdown();
83
ecore_evas_shutdown();
90
ecore_main_loop_begin();
95
ecore_main_loop_quit();
98
void RunLoop::wakeUpEvent(void* data, void*, unsigned int)
100
static_cast<RunLoop*>(data)->performWork();
103
void RunLoop::wakeUp()
105
MutexLocker locker(m_pipeLock);
106
ecore_pipe_write(m_pipe.get(), wakupEcorePipeMessage, ecorePipeMessageSize);
109
RunLoop::TimerBase::TimerBase(RunLoop*)
110
: m_isRepeating(false)
114
RunLoop::TimerBase::~TimerBase()
119
bool RunLoop::TimerBase::timerFired(void* data)
121
RunLoop::TimerBase* timer = static_cast<RunLoop::TimerBase*>(data);
125
if (!timer->m_isRepeating) {
126
timer->m_timer = nullptr;
127
return ECORE_CALLBACK_CANCEL;
130
return ECORE_CALLBACK_RENEW;
133
void RunLoop::TimerBase::start(double nextFireInterval, bool repeat)
135
m_isRepeating = repeat;
136
m_timer = adoptPtr(ecore_timer_add(nextFireInterval, reinterpret_cast<Ecore_Task_Cb>(timerFired), this));
139
void RunLoop::TimerBase::stop()
144
bool RunLoop::TimerBase::isActive() const
146
return (m_timer) ? true : false;
149
} // namespace WebCore