wxCHECK_MSG( col, FALSE, _T("NULL colour parameter in wxDC::GetPixel"));
uchar r, g, b;
- m_MGLDC->unpackColorFast(m_MGLDC->getPixel(XLOG2DEV(x), XLOG2DEV(y)),
+ m_MGLDC->unpackColorFast(m_MGLDC->getPixel(XLOG2DEV(x), YLOG2DEV(y)),
r, g, b);
col->Set(r, g, b);
return TRUE;
m_MGLDC->makeCurrent(); // will go away with MGL6.0
if ( !m_penSelected )
SelectPen();
- m_MGLDC->lineExt(XLOG2DEV(x1) + m_penOfsX, XLOG2DEV(y1) + m_penOfsY,
- XLOG2DEV(x2) + m_penOfsX, XLOG2DEV(y2) + m_penOfsY,FALSE);
+ m_MGLDC->lineExt(XLOG2DEV(x1) + m_penOfsX, YLOG2DEV(y1) + m_penOfsY,
+ XLOG2DEV(x2) + m_penOfsX, YLOG2DEV(y2) + m_penOfsY,FALSE);
CalcBoundingBox(x1, y1);
CalcBoundingBox(x2, y2);
}
{
event_t evt;
- MGL_wmUpdateDC(g_winMng);
-
// VS: The code bellow is equal to MGL's EVT_halt implementation, with
// two things added: sleeping (busy waiting is stupid, lets make CPU's
// life a bit easier) and timers updating
// EVT_halt(&evt, EVT_EVERYEVT);
- do
+ for (;;)
{
- EVT_pollJoystick();
- EVT_getNext(&evt, EVT_EVERYEVT);
#if wxUSE_TIMER
wxTimer::NotifyTimers();
+ MGL_wmUpdateDC(g_winMng);
#endif
+ EVT_pollJoystick();
+ if ( EVT_getNext(&evt, EVT_EVERYEVT) ) break;
PM_sleep(10);
- } while (!(evt.what & EVT_EVERYEVT));
+ }
// end of EVT_halt
MGL_wmProcessEvent(g_winMng, &evt);
#if wxUSE_TIMER
+#include "wx/log.h"
#include "wx/mgl/private.h"
extern "C" ulong _EVT_getTicks();
desc->shotTime = when;
desc->running = TRUE;
+ wxLogTrace("mgl_timer", "queued timer %p at tick %i",
+ desc->timer, when);
+
if ( m_timers )
{
wxTimerDesc *d = m_timers;
{
unsigned long now = _EVT_getTicks();
wxTimerDesc *desc;
+
+ wxLogTrace("mgl_timer", "notifying timers, time is %i", now);
while ( m_timers && m_timers->shotTime <= now )
{
desc = m_timers;
- desc->timer->Notify();
+ bool oneShot = desc->timer->IsOneShot();
RemoveTimer(desc);
- if ( !desc->timer->IsOneShot() )
+
+ desc->timer->Notify();
+ wxLogTrace("mgl_timer", "notified timer %p sheduled for %i",
+ desc->timer, desc->shotTime);
+
+ if ( !oneShot )
{
QueueTimer(desc, now + desc->timer->GetInterval());
}
if ( ms_timersCnt++ == 0 )
ms_scheduler = new wxTimerScheduler;
m_desc = new wxTimerDesc(this);
+ wxLogTrace("mgl_timer", "--added timer (count=%i)", ms_timersCnt);
}
wxTimer::~wxTimer()
ms_scheduler = NULL;
}
delete m_desc;
+ wxLogTrace("mgl_timer", "--removed timer (count=%i)", ms_timersCnt);
}
bool wxTimer::IsRunning() const
bool wxTimer::Start(int millisecs, bool oneShot)
{
+ wxLogTrace("mgl_timer", "started timer %p: %i ms, oneshot=%i",
+ this, millisecs, oneShot);
+
if ( !wxTimerBase::Start(millisecs, oneShot) )
return FALSE;
}
}
- DoMoveWindow(x, y, width, height);
+ if ( m_wnd->x != x || m_wnd->y != y ||
+ (int)m_wnd->width != width || (int)m_wnd->height != height )
+ {
+ DoMoveWindow(x, y, width, height);
- wxSizeEvent event(wxSize(width, height), GetId());
- event.SetEventObject(this);
- GetEventHandler()->ProcessEvent(event);
+ wxSizeEvent event(wxSize(width, height), GetId());
+ event.SetEventObject(this);
+ GetEventHandler()->ProcessEvent(event);
+ }
}
void wxWindowMGL::DoSetClientSize(int width, int height)