mirror of
https://github.com/tuxbox-neutrino/neutrino.git
synced 2025-08-27 15:32:59 +02:00
tuxtxt: use blit2FB instead of handmade mem copy
This gets rid of most hardware specific code in tuxtxt Conflicts: lib/libtuxtxt/tuxtxt.cpp
This commit is contained in:
@@ -29,6 +29,8 @@
|
|||||||
#define KEY_TTZOOM KEY_FN_2
|
#define KEY_TTZOOM KEY_FN_2
|
||||||
#define KEY_REVEAL KEY_FN_D
|
#define KEY_REVEAL KEY_FN_D
|
||||||
|
|
||||||
|
#define MARK_FB(a, b, c, d) if (p == lfb) CFrameBuffer::getInstance()->mark(a, b, (a) + (c), (b) + (d))
|
||||||
|
|
||||||
extern cVideo * videoDecoder;
|
extern cVideo * videoDecoder;
|
||||||
|
|
||||||
static pthread_t ttx_sub_thread;
|
static pthread_t ttx_sub_thread;
|
||||||
@@ -2769,6 +2771,7 @@ void Menu_Init(char *menu, int current_pid, int menuitem, int hotindex)
|
|||||||
menu[MenuLine[M_PID]*Menu_Width + 27] = '?';
|
menu[MenuLine[M_PID]*Menu_Width + 27] = '?';
|
||||||
/* render menu */
|
/* render menu */
|
||||||
PosY = Menu_StartY;
|
PosY = Menu_StartY;
|
||||||
|
CFrameBuffer::getInstance()->waitForIdle();
|
||||||
for (line = 0; line < Menu_Height; line++)
|
for (line = 0; line < Menu_Height; line++)
|
||||||
{
|
{
|
||||||
PosX = Menu_StartX;
|
PosX = Menu_StartX;
|
||||||
@@ -4992,6 +4995,7 @@ void RenderMessage(int Message)
|
|||||||
else
|
else
|
||||||
msg = &message_3[menulanguage][0];
|
msg = &message_3[menulanguage][0];
|
||||||
|
|
||||||
|
CFrameBuffer::getInstance()->waitForIdle();
|
||||||
/* render infobar */
|
/* render infobar */
|
||||||
PosX = StartX + fontwidth+5;
|
PosX = StartX + fontwidth+5;
|
||||||
PosY = StartY + fontheight*16;
|
PosY = StartY + fontheight*16;
|
||||||
@@ -5568,13 +5572,7 @@ void CopyBB2FB()
|
|||||||
/* copy backbuffer to framebuffer */
|
/* copy backbuffer to framebuffer */
|
||||||
if (!zoommode[boxed])
|
if (!zoommode[boxed])
|
||||||
{
|
{
|
||||||
#if HAVE_SPARK_HARDWARE
|
|
||||||
f->blit2FB(lbb, var_screeninfo.xres, var_screeninfo.yres, 0, 0, 0, 0, true);
|
f->blit2FB(lbb, var_screeninfo.xres, var_screeninfo.yres, 0, 0, 0, 0, true);
|
||||||
#elif HAVE_COOL_HARDWARE
|
|
||||||
f->fbCopyArea(var_screeninfo.xres, var_screeninfo.yres, 0, 0, 0, var_screeninfo.yres);
|
|
||||||
#else
|
|
||||||
memcpy(lfb, lbb, var_screeninfo.xres*var_screeninfo.yres * sizeof(fb_pixel_t));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* adapt background of backbuffer if changed */
|
/* adapt background of backbuffer if changed */
|
||||||
if (StartX > 0 && *lfb != *lbb) {
|
if (StartX > 0 && *lfb != *lbb) {
|
||||||
@@ -5611,28 +5609,7 @@ void CopyBB2FB()
|
|||||||
if (screenmode[boxed] == 1)
|
if (screenmode[boxed] == 1)
|
||||||
{
|
{
|
||||||
screenwidth = TV43STARTX;
|
screenwidth = TV43STARTX;
|
||||||
#if HAVE_SPARK_HARDWARE
|
f->blit2FB(lbb, var_screeninfo.xres, var_screeninfo.yres, TV43STARTX, 0, TV43STARTX, 0, true);
|
||||||
int cx = var_screeninfo.xres - TV43STARTX; /* x start */
|
|
||||||
if (boxed)
|
|
||||||
cx = (screen_w - 40 * fontwidth) / 2;
|
|
||||||
int cw = TV43STARTX; /* width */
|
|
||||||
int cy = StartY;
|
|
||||||
int ch = 24*fontheight;
|
|
||||||
f->blit2FB(lbb, cw, ch, cx, cy, cx, cy, true);
|
|
||||||
#else
|
|
||||||
fb_pixel_t *topdst = dst;
|
|
||||||
size_t width = (ex - screenwidth) * sizeof(fb_pixel_t);
|
|
||||||
|
|
||||||
topsrc += screenwidth;
|
|
||||||
topdst += screenwidth;
|
|
||||||
|
|
||||||
for (i=0; i < 24*fontheight; i++)
|
|
||||||
{
|
|
||||||
memmove(topdst, topsrc, width);
|
|
||||||
topdst += var_screeninfo.xres;
|
|
||||||
topsrc += var_screeninfo.xres;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
else if (screenmode[boxed] == 2)
|
else if (screenmode[boxed] == 2)
|
||||||
screenwidth = TV169FULLSTARTX;
|
screenwidth = TV169FULLSTARTX;
|
||||||
|
Reference in New Issue
Block a user