mirror of
https://github.com/tuxbox-neutrino/neutrino.git
synced 2025-08-27 15:32:59 +02:00
src/driver/framebuffer.cpp: fix fb for Threads use
This commit is contained in:
@@ -632,7 +632,9 @@ void CFrameBuffer::paintBoxRel(const int x, const int y, const int dx, const int
|
|||||||
int corner_bl = (type & CORNER_BOTTOM_LEFT) ? 1 : 0;
|
int corner_bl = (type & CORNER_BOTTOM_LEFT) ? 1 : 0;
|
||||||
int corner_br = (type & CORNER_BOTTOM_RIGHT) ? 1 : 0;
|
int corner_br = (type & CORNER_BOTTOM_RIGHT) ? 1 : 0;
|
||||||
|
|
||||||
#ifndef USE_NEVIS_GXA
|
#ifdef USE_NEVIS_GXA
|
||||||
|
OpenThreads::ScopedLock<OpenThreads::Mutex> m_lock(mutex);
|
||||||
|
#else
|
||||||
int swidth = stride / sizeof(fb_pixel_t);
|
int swidth = stride / sizeof(fb_pixel_t);
|
||||||
fb_pixel_t *fbp = getFrameBufferPointer() + (swidth * y);
|
fb_pixel_t *fbp = getFrameBufferPointer() + (swidth * y);
|
||||||
#endif
|
#endif
|
||||||
@@ -763,6 +765,7 @@ void CFrameBuffer::paintVLine(int x, int ya, int yb, const fb_pixel_t col)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
#ifdef USE_NEVIS_GXA
|
#ifdef USE_NEVIS_GXA
|
||||||
|
OpenThreads::ScopedLock<OpenThreads::Mutex> m_lock(mutex);
|
||||||
/* draw a single vertical line from point x/ya to x/yb */
|
/* draw a single vertical line from point x/ya to x/yb */
|
||||||
unsigned int cmd = GXA_CMD_NOT_TEXT | GXA_SRC_BMP_SEL(2) | GXA_DST_BMP_SEL(2) | GXA_PARAM_COUNT(2) | GXA_CMD_NOT_ALPHA;
|
unsigned int cmd = GXA_CMD_NOT_TEXT | GXA_SRC_BMP_SEL(2) | GXA_DST_BMP_SEL(2) | GXA_PARAM_COUNT(2) | GXA_CMD_NOT_ALPHA;
|
||||||
|
|
||||||
@@ -788,6 +791,7 @@ void CFrameBuffer::paintVLineRel(int x, int y, int dy, const fb_pixel_t col)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
#ifdef USE_NEVIS_GXA
|
#ifdef USE_NEVIS_GXA
|
||||||
|
OpenThreads::ScopedLock<OpenThreads::Mutex> m_lock(mutex);
|
||||||
/* draw a single vertical line from point x/y with hight dx */
|
/* draw a single vertical line from point x/y with hight dx */
|
||||||
unsigned int cmd = GXA_CMD_NOT_TEXT | GXA_SRC_BMP_SEL(2) | GXA_DST_BMP_SEL(2) | GXA_PARAM_COUNT(2) | GXA_CMD_NOT_ALPHA;
|
unsigned int cmd = GXA_CMD_NOT_TEXT | GXA_SRC_BMP_SEL(2) | GXA_DST_BMP_SEL(2) | GXA_PARAM_COUNT(2) | GXA_CMD_NOT_ALPHA;
|
||||||
|
|
||||||
@@ -811,6 +815,7 @@ void CFrameBuffer::paintHLine(int xa, int xb, int y, const fb_pixel_t col)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
#ifdef USE_NEVIS_GXA
|
#ifdef USE_NEVIS_GXA
|
||||||
|
OpenThreads::ScopedLock<OpenThreads::Mutex> m_lock(mutex);
|
||||||
/* draw a single horizontal line from point xa/y to xb/y */
|
/* draw a single horizontal line from point xa/y to xb/y */
|
||||||
unsigned int cmd = GXA_CMD_NOT_TEXT | GXA_SRC_BMP_SEL(2) | GXA_DST_BMP_SEL(2) | GXA_PARAM_COUNT(2) | GXA_CMD_NOT_ALPHA;
|
unsigned int cmd = GXA_CMD_NOT_TEXT | GXA_SRC_BMP_SEL(2) | GXA_DST_BMP_SEL(2) | GXA_PARAM_COUNT(2) | GXA_CMD_NOT_ALPHA;
|
||||||
|
|
||||||
@@ -835,6 +840,7 @@ void CFrameBuffer::paintHLineRel(int x, int dx, int y, const fb_pixel_t col)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
#ifdef USE_NEVIS_GXA
|
#ifdef USE_NEVIS_GXA
|
||||||
|
OpenThreads::ScopedLock<OpenThreads::Mutex> m_lock(mutex);
|
||||||
/* draw a single horizontal line from point x/y with width dx */
|
/* draw a single horizontal line from point x/y with width dx */
|
||||||
unsigned int cmd = GXA_CMD_NOT_TEXT | GXA_SRC_BMP_SEL(2) | GXA_DST_BMP_SEL(2) | GXA_PARAM_COUNT(2) | GXA_CMD_NOT_ALPHA;
|
unsigned int cmd = GXA_CMD_NOT_TEXT | GXA_SRC_BMP_SEL(2) | GXA_DST_BMP_SEL(2) | GXA_PARAM_COUNT(2) | GXA_CMD_NOT_ALPHA;
|
||||||
|
|
||||||
@@ -1698,6 +1704,7 @@ void CFrameBuffer::blit2FB(void *fbbuff, uint32_t width, uint32_t height, uint32
|
|||||||
//printf("CFrameBuffer::blit2FB: data %x Kva %x\n", (int) fbbuff, (int) uKva);
|
//printf("CFrameBuffer::blit2FB: data %x Kva %x\n", (int) fbbuff, (int) uKva);
|
||||||
|
|
||||||
if(uKva != NULL) {
|
if(uKva != NULL) {
|
||||||
|
OpenThreads::ScopedLock<OpenThreads::Mutex> m_lock(mutex);
|
||||||
cmd = GXA_CMD_BLT | GXA_CMD_NOT_TEXT | GXA_SRC_BMP_SEL(1) | GXA_DST_BMP_SEL(2) | GXA_PARAM_COUNT(3);
|
cmd = GXA_CMD_BLT | GXA_CMD_NOT_TEXT | GXA_SRC_BMP_SEL(1) | GXA_DST_BMP_SEL(2) | GXA_PARAM_COUNT(3);
|
||||||
|
|
||||||
_write_gxa(gxa_base, GXA_BMP1_TYPE_REG, (3 << 16) | width);
|
_write_gxa(gxa_base, GXA_BMP1_TYPE_REG, (3 << 16) | width);
|
||||||
|
@@ -32,6 +32,8 @@
|
|||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <map>
|
#include <map>
|
||||||
|
#include <OpenThreads/Mutex>
|
||||||
|
#include <OpenThreads/ScopedLock>
|
||||||
|
|
||||||
#define fb_pixel_t uint32_t
|
#define fb_pixel_t uint32_t
|
||||||
|
|
||||||
@@ -57,6 +59,7 @@ class CFrameBuffer
|
|||||||
private:
|
private:
|
||||||
|
|
||||||
CFrameBuffer();
|
CFrameBuffer();
|
||||||
|
OpenThreads::Mutex mutex;
|
||||||
|
|
||||||
struct rgbData
|
struct rgbData
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user