X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/8251696239ba2bb74c348a2726fab85a275ebd11..6ae5817707cf77c29ff070e76791cc4816946ec4:/lib/gdi/grc.cpp diff --git a/lib/gdi/grc.cpp b/lib/gdi/grc.cpp index e5cab87e..76c02d2d 100644 --- a/lib/gdi/grc.cpp +++ b/lib/gdi/grc.cpp @@ -149,7 +149,7 @@ void *gRC::thread() if (m_spinner_enabled) timeout.tv_nsec += 100*1000*1000; else - timeout.tv_nsec += 500*1000*1000; + timeout.tv_sec += 2; /* yes, this is required. */ if (timeout.tv_nsec > 1000*1000*1000) @@ -572,14 +572,17 @@ void gPainter::end() gDC::gDC() { + m_spinner_pic = 0; } gDC::gDC(gPixmap *pixmap): m_pixmap(pixmap) { + m_spinner_pic = 0; } gDC::~gDC() { + delete[] m_spinner_pic; } void gDC::exec(gOpcode *o) @@ -804,7 +807,8 @@ void gDC::incrementSpinner() static int blub; blub++; - + +#if 0 int i; for (i = 0; i < 5; ++i) @@ -816,14 +820,37 @@ void gDC::incrementSpinner() m_pixmap->fill(eRect(x, y, 10, 10), gRGB(col, col, col)); } +#endif + + m_spinner_temp->blit(*m_spinner_saved, ePoint(0, 0), eRect(ePoint(0, 0), m_spinner_pos.size())); + + if (m_spinner_pic[m_spinner_i]) + m_spinner_temp->blit(*m_spinner_pic[m_spinner_i], ePoint(0, 0), eRect(ePoint(0, 0), m_spinner_pos.size()), gPixmap::blitAlphaTest); + + m_pixmap->blit(*m_spinner_temp, m_spinner_pos.topLeft(), gRegion(m_spinner_pos), 0); + m_spinner_i++; + m_spinner_i %= m_spinner_num; } -void gDC::setSpinner(eRect pos) +void gDC::setSpinner(eRect pos, ePtr *pic, int len) { ASSERT(m_pixmap); ASSERT(m_pixmap->surface); m_spinner_saved = new gPixmap(pos.size(), m_pixmap->surface->bpp); + m_spinner_temp = new gPixmap(pos.size(), m_pixmap->surface->bpp); m_spinner_pos = pos; + + m_spinner_i = 0; + m_spinner_num = len; + + int i; + if (m_spinner_pic) + delete[] m_spinner_pic; + + m_spinner_pic = new ePtr[len]; + + for (i = 0; i < len; ++i) + m_spinner_pic[i] = pic[i]; } DEFINE_REF(gDC);