2011-12-22 15:19:25 +00:00
|
|
|
/*
|
|
|
|
* \brief Client-side framebuffer interface
|
|
|
|
* \author Norman Feske
|
|
|
|
* \date 2006-07-10
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*
|
2017-02-20 12:23:52 +00:00
|
|
|
* Copyright (C) 2006-2017 Genode Labs GmbH
|
2011-12-22 15:19:25 +00:00
|
|
|
*
|
|
|
|
* This file is part of the Genode OS framework, which is distributed
|
2017-02-20 12:23:52 +00:00
|
|
|
* under the terms of the GNU Affero General Public License version 3.
|
2011-12-22 15:19:25 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _INCLUDE__FRAMEBUFFER_SESSION__CLIENT_H_
|
|
|
|
#define _INCLUDE__FRAMEBUFFER_SESSION__CLIENT_H_
|
|
|
|
|
|
|
|
#include <framebuffer_session/capability.h>
|
|
|
|
#include <base/rpc_client.h>
|
|
|
|
|
2015-03-04 20:12:14 +00:00
|
|
|
namespace Framebuffer { struct Session_client; }
|
2011-12-22 15:19:25 +00:00
|
|
|
|
|
|
|
|
2024-09-23 13:05:51 +00:00
|
|
|
struct Framebuffer::Session_client : Rpc_client<Session>
|
2015-03-04 20:12:14 +00:00
|
|
|
{
|
2024-09-23 14:54:05 +00:00
|
|
|
explicit Session_client(Session_capability cap) : Rpc_client<Session>(cap) { }
|
2011-12-22 15:19:25 +00:00
|
|
|
|
2024-09-23 14:54:05 +00:00
|
|
|
Dataspace_capability dataspace() override { return call<Rpc_dataspace>(); }
|
2012-01-20 20:34:01 +00:00
|
|
|
|
2015-03-04 20:12:14 +00:00
|
|
|
Mode mode() const override { return call<Rpc_mode>(); }
|
2011-12-22 15:19:25 +00:00
|
|
|
|
2024-09-23 14:54:05 +00:00
|
|
|
void mode_sigh(Signal_context_capability sigh) override { call<Rpc_mode_sigh>(sigh); }
|
2014-04-29 13:32:09 +00:00
|
|
|
|
2024-09-23 14:54:05 +00:00
|
|
|
void sync_sigh(Signal_context_capability sigh) override { call<Rpc_sync_sigh>(sigh); }
|
2015-03-04 20:12:14 +00:00
|
|
|
|
2024-09-26 11:45:45 +00:00
|
|
|
void sync_source(Session_label const &source) override { call<Rpc_sync_source>(source); }
|
|
|
|
|
2024-09-23 13:05:51 +00:00
|
|
|
void refresh(Rect rect) override { call<Rpc_refresh>(rect); }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Flush specified pixel region
|
|
|
|
*
|
|
|
|
* \deprecated
|
|
|
|
* \noapi
|
|
|
|
*/
|
|
|
|
void refresh(int x, int y, int w, int h)
|
|
|
|
{
|
|
|
|
refresh(Rect { { x, y }, { unsigned(w), unsigned(h) } });
|
|
|
|
}
|
|
|
|
|
2024-09-23 14:54:05 +00:00
|
|
|
Blit_result blit(Blit_batch const &batch) override { return call<Rpc_blit>(batch); }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Transfer a single pixel region within the framebuffer
|
|
|
|
*/
|
|
|
|
Blit_result blit(Rect from, Point to)
|
|
|
|
{
|
|
|
|
Blit_batch batch { };
|
|
|
|
batch.transfer[0] = { from, to };
|
|
|
|
return blit(batch);
|
|
|
|
}
|
|
|
|
|
|
|
|
void panning(Point pos) override { call<Rpc_panning>(pos); }
|
2015-03-04 20:12:14 +00:00
|
|
|
};
|
2011-12-22 15:19:25 +00:00
|
|
|
|
|
|
|
#endif /* _INCLUDE__FRAMEBUFFER_SESSION__CLIENT_H_ */
|