mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-23 15:32:25 +00:00
parent
650267b425
commit
24b7accbf2
@ -25,6 +25,7 @@
|
|||||||
#include <dataspace/client.h>
|
#include <dataspace/client.h>
|
||||||
#include <blit/blit.h>
|
#include <blit/blit.h>
|
||||||
#include <os/config.h>
|
#include <os/config.h>
|
||||||
|
#include <timer_session/connection.h>
|
||||||
|
|
||||||
/* Local */
|
/* Local */
|
||||||
#include "framebuffer.h"
|
#include "framebuffer.h"
|
||||||
@ -94,7 +95,7 @@ namespace Framebuffer {
|
|||||||
Genode::Dataspace_capability _fb_ds;
|
Genode::Dataspace_capability _fb_ds;
|
||||||
void *_fb_addr;
|
void *_fb_addr;
|
||||||
|
|
||||||
Genode::Signal_context_capability _sync_sigh;
|
Timer::Connection _timer;
|
||||||
|
|
||||||
void _refresh_buffered(int x, int y, int w, int h)
|
void _refresh_buffered(int x, int y, int w, int h)
|
||||||
{
|
{
|
||||||
@ -184,16 +185,14 @@ namespace Framebuffer {
|
|||||||
|
|
||||||
void sync_sigh(Genode::Signal_context_capability sigh) override
|
void sync_sigh(Genode::Signal_context_capability sigh) override
|
||||||
{
|
{
|
||||||
_sync_sigh = sigh;
|
_timer.sigh(sigh);
|
||||||
|
_timer.trigger_periodic(10*1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
void refresh(int x, int y, int w, int h) override
|
void refresh(int x, int y, int w, int h) override
|
||||||
{
|
{
|
||||||
if (_buffered)
|
if (_buffered)
|
||||||
_refresh_buffered(x, y, w, h);
|
_refresh_buffered(x, y, w, h);
|
||||||
|
|
||||||
if (_sync_sigh.valid())
|
|
||||||
Signal_transmitter(_sync_sigh).submit();
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
/* Genode includes */
|
/* Genode includes */
|
||||||
#include <framebuffer_session/framebuffer_session.h>
|
#include <framebuffer_session/framebuffer_session.h>
|
||||||
#include <cap_session/connection.h>
|
#include <cap_session/connection.h>
|
||||||
|
#include <timer_session/connection.h>
|
||||||
#include <dataspace/client.h>
|
#include <dataspace/client.h>
|
||||||
#include <base/printf.h>
|
#include <base/printf.h>
|
||||||
#include <base/sleep.h>
|
#include <base/sleep.h>
|
||||||
@ -46,7 +47,7 @@ class Framebuffer::Session_component
|
|||||||
size_t _size;
|
size_t _size;
|
||||||
Dataspace_capability _ds;
|
Dataspace_capability _ds;
|
||||||
addr_t _phys_base;
|
addr_t _phys_base;
|
||||||
Signal_context_capability _sync_sigh;
|
Timer::Connection _timer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert Driver::Format to Framebuffer::Mode::Format
|
* Convert Driver::Format to Framebuffer::Mode::Format
|
||||||
@ -101,14 +102,11 @@ class Framebuffer::Session_component
|
|||||||
|
|
||||||
void sync_sigh(Genode::Signal_context_capability sigh) override
|
void sync_sigh(Genode::Signal_context_capability sigh) override
|
||||||
{
|
{
|
||||||
_sync_sigh = sigh;
|
_timer.sigh(sigh);
|
||||||
|
_timer.trigger_periodic(10*1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
void refresh(int, int, int, int) override
|
void refresh(int, int, int, int) override { }
|
||||||
{
|
|
||||||
if (_sync_sigh.valid())
|
|
||||||
Signal_transmitter(_sync_sigh).submit();
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
/* Genode includes */
|
/* Genode includes */
|
||||||
#include <imx_framebuffer_session/imx_framebuffer_session.h>
|
#include <imx_framebuffer_session/imx_framebuffer_session.h>
|
||||||
#include <cap_session/connection.h>
|
#include <cap_session/connection.h>
|
||||||
|
#include <timer_session/connection.h>
|
||||||
#include <dataspace/client.h>
|
#include <dataspace/client.h>
|
||||||
#include <base/printf.h>
|
#include <base/printf.h>
|
||||||
#include <base/sleep.h>
|
#include <base/sleep.h>
|
||||||
@ -41,7 +42,8 @@ class Framebuffer::Session_component :
|
|||||||
Genode::Dataspace_capability _fb_ds;
|
Genode::Dataspace_capability _fb_ds;
|
||||||
void *_fb_addr;
|
void *_fb_addr;
|
||||||
|
|
||||||
Signal_context_capability _sync_sigh;
|
Timer::Connection _timer;
|
||||||
|
|
||||||
|
|
||||||
Ipu &_ipu;
|
Ipu &_ipu;
|
||||||
|
|
||||||
@ -95,16 +97,14 @@ class Framebuffer::Session_component :
|
|||||||
|
|
||||||
void sync_sigh(Genode::Signal_context_capability sigh) override
|
void sync_sigh(Genode::Signal_context_capability sigh) override
|
||||||
{
|
{
|
||||||
_sync_sigh = sigh;
|
_timer.sigh(sigh);
|
||||||
|
_timer.trigger_periodic(10*1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
void refresh(int x, int y, int w, int h) override
|
void refresh(int x, int y, int w, int h) override
|
||||||
{
|
{
|
||||||
if (_buffered)
|
if (_buffered)
|
||||||
_refresh_buffered(x, y, w, h);
|
_refresh_buffered(x, y, w, h);
|
||||||
|
|
||||||
if (_sync_sigh.valid())
|
|
||||||
Signal_transmitter(_sync_sigh).submit();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void overlay(Genode::addr_t phys_base, int x, int y, int alpha) {
|
void overlay(Genode::addr_t phys_base, int x, int y, int alpha) {
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
#include <base/rpc_server.h>
|
#include <base/rpc_server.h>
|
||||||
#include <io_mem_session/connection.h>
|
#include <io_mem_session/connection.h>
|
||||||
#include <cap_session/connection.h>
|
#include <cap_session/connection.h>
|
||||||
|
#include <timer_session/connection.h>
|
||||||
#include <dataspace/client.h>
|
#include <dataspace/client.h>
|
||||||
#include <timer_session/connection.h>
|
#include <timer_session/connection.h>
|
||||||
#include <framebuffer_session/framebuffer_session.h>
|
#include <framebuffer_session/framebuffer_session.h>
|
||||||
@ -55,12 +56,11 @@ namespace Framebuffer
|
|||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
|
||||||
Genode::Dataspace_capability _fb_ds_cap;
|
Genode::Dataspace_capability _fb_ds_cap;
|
||||||
Genode::Dataspace_client _fb_ds;
|
Genode::Dataspace_client _fb_ds;
|
||||||
Genode::addr_t _regs_base;
|
Genode::addr_t _regs_base;
|
||||||
Genode::addr_t _sys_regs_base;
|
Genode::addr_t _sys_regs_base;
|
||||||
Timer::Connection _timer;
|
Timer::Connection _timer;
|
||||||
Genode::Signal_context_capability _sync_sigh;
|
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
/**
|
/**
|
||||||
@ -162,13 +162,13 @@ namespace Framebuffer
|
|||||||
|
|
||||||
void mode_sigh(Genode::Signal_context_capability) override { }
|
void mode_sigh(Genode::Signal_context_capability) override { }
|
||||||
|
|
||||||
void sync_sigh(Genode::Signal_context_capability sigh) override { _sync_sigh = sigh; }
|
void sync_sigh(Genode::Signal_context_capability sigh) override
|
||||||
|
|
||||||
void refresh(int x, int y, int w, int h) override
|
|
||||||
{
|
{
|
||||||
if (_sync_sigh.valid())
|
_timer.sigh(sigh);
|
||||||
Genode::Signal_transmitter(_sync_sigh).submit();
|
_timer.trigger_periodic(10*1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void refresh(int x, int y, int w, int h) override { }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
#include <base/rpc_server.h>
|
#include <base/rpc_server.h>
|
||||||
#include <platform_session/connection.h>
|
#include <platform_session/connection.h>
|
||||||
#include <blit/blit.h>
|
#include <blit/blit.h>
|
||||||
|
#include <timer_session/connection.h>
|
||||||
|
|
||||||
namespace Framebuffer {
|
namespace Framebuffer {
|
||||||
using namespace Genode;
|
using namespace Genode;
|
||||||
@ -38,7 +39,7 @@ class Framebuffer::Session_component : public Genode::Rpc_object<Framebuffer::Se
|
|||||||
size_t const _height;
|
size_t const _height;
|
||||||
Lazy_volatile_object<Attached_ram_dataspace> _bb_mem;
|
Lazy_volatile_object<Attached_ram_dataspace> _bb_mem;
|
||||||
Attached_io_mem_dataspace _fb_mem;
|
Attached_io_mem_dataspace _fb_mem;
|
||||||
Signal_context_capability _sync_sigh;
|
Timer::Connection _timer;
|
||||||
|
|
||||||
void _refresh_buffered(int x, int y, int w, int h)
|
void _refresh_buffered(int x, int y, int w, int h)
|
||||||
{
|
{
|
||||||
@ -95,16 +96,14 @@ class Framebuffer::Session_component : public Genode::Rpc_object<Framebuffer::Se
|
|||||||
|
|
||||||
void sync_sigh(Genode::Signal_context_capability sigh) override
|
void sync_sigh(Genode::Signal_context_capability sigh) override
|
||||||
{
|
{
|
||||||
_sync_sigh = sigh;
|
_timer.sigh(sigh);
|
||||||
|
_timer.trigger_periodic(10*1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
void refresh(int x, int y, int w, int h) override
|
void refresh(int x, int y, int w, int h) override
|
||||||
{
|
{
|
||||||
if (_bb_mem.is_constructed())
|
if (_bb_mem.is_constructed())
|
||||||
_refresh_buffered(x, y, w, h);
|
_refresh_buffered(x, y, w, h);
|
||||||
|
|
||||||
if (_sync_sigh.valid())
|
|
||||||
Signal_transmitter(_sync_sigh).submit();
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
#include <cap_session/connection.h>
|
#include <cap_session/connection.h>
|
||||||
#include <input/root.h>
|
#include <input/root.h>
|
||||||
#include <os/config.h>
|
#include <os/config.h>
|
||||||
|
#include <timer_session/connection.h>
|
||||||
|
|
||||||
/* local includes */
|
/* local includes */
|
||||||
#include <input.h>
|
#include <input.h>
|
||||||
@ -66,7 +67,7 @@ class Framebuffer::Session_component : public Genode::Rpc_object<Session>
|
|||||||
|
|
||||||
Mode _mode;
|
Mode _mode;
|
||||||
|
|
||||||
Genode::Signal_context_capability _sync_sigh;
|
Timer::Connection _timer;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@ -83,7 +84,8 @@ class Framebuffer::Session_component : public Genode::Rpc_object<Session>
|
|||||||
|
|
||||||
void sync_sigh(Genode::Signal_context_capability sigh) override
|
void sync_sigh(Genode::Signal_context_capability sigh) override
|
||||||
{
|
{
|
||||||
_sync_sigh = sigh;
|
_timer.sigh(sigh);
|
||||||
|
_timer.trigger_periodic(10*1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
void refresh(int x, int y, int w, int h) override
|
void refresh(int x, int y, int w, int h) override
|
||||||
@ -110,9 +112,6 @@ class Framebuffer::Session_component : public Genode::Rpc_object<Session>
|
|||||||
/* flush pixels in sdl window */
|
/* flush pixels in sdl window */
|
||||||
SDL_UpdateRect(screen, x1, y1, x2 - x1 + 1, y2 - y1 + 1);
|
SDL_UpdateRect(screen, x1, y1, x2 - x1 + 1, y2 - y1 + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_sync_sigh.valid())
|
|
||||||
Genode::Signal_transmitter(_sync_sigh).submit();
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user