Здравствуйте. Прошу вашей помощи.
Суть проблемы:
Пишу приложение (без GUI), выводит на рабочий стол небольшое окошко, в котором должна отображаться картинка.
Картинка - статичное gif изображение, конвертирую в битмап с помощью CImageDecoder:
Code:
void CMyServer::LoadImage()
    {
    iBitmap = new(ELeave) CFbsBitmap();
    CleanupStack::PushL(iBitmap);
    iDecoder = CImageDecoder::FileNewL(iFs,KFileName);
    iFrameInfo = iDecoder->FrameInfo(0);
    iRect = iFrameInfo.iFrameCoordsInPixels;
    iBitmap->Create(iRect.Size(),EColor16M);
    iDecoder->Convert(&iStatus,*iBitmap,0);
    iImageLoaded = ETrue;
    iIsDraw = ETrue;
    SetActive();
    }
Код работает, картинка отображается нормально. Проблема возникла, когда я стал писать часть кода, отвечающего за отображение картинки в режиме ожидания. Эта часть описана в том же классе, что и CImageDecoder. Вот код -
Code:
void CMyServer::WaitWgEvent()
    {
    iIsDraw = EFalse;
    iGetEvent = ETrue;
    __LOGSTR("WaitWgEvent");
    iWs.EventReady(&iStatus);
    SetActive();
    }
и
Code:
void CMyServer::GetWgEvent()
    {
   if(iStatus == KErrNone)
	{
    TWsEvent e;
    iWs.GetEvent(e);
    __LOGSTR1("event: %d",e.Type());
	}
    TInt WgId = iWs.GetFocusWindowGroup();
    CApaWindowGroupName* gn = CApaWindowGroupName::NewLC(iWs, WgId);
    __LOGSTR1("Uid: 0x%x",gn->AppUid());
    if(gn->AppUid() == TUid::Uid(0x101fd64c))
	{
	Draw(ETrue);
	}else{
	Draw(EFalse);
	}
    }
и
Code:
void CMyServer::RunL()
    {
    __LOGSTR("RunL");
    if(iIsDraw)
	{
	Draw(ETrue);
	}
    if(iWaitEvent)
	{
	WaitWgEvent();
	}
    if(iGetEvent)
	{
	GetWgEvent();
	}
    }
Собственно, проблема вот в чём. Обнаружилось падение приложения с WSERV 8, определил, что по каким-то неведомым мне причинам iStatus вовсе не равняется KErrNone, и поэтому часть кода не выполняется. Подскажите хоть в какую сторону копать, а то что-то совсем мысли кончились