Здравствуйте. Прошу вашей помощи.
Суть проблемы:
Пишу приложение (без GUI), выводит на рабочий стол небольшое окошко, в котором должна отображаться картинка.
Картинка - статичное gif изображение, конвертирую в битмап с помощью CImageDecoder:
Код работает, картинка отображается нормально. Проблема возникла, когда я стал писать часть кода, отвечающего за отображение картинки в режиме ожидания. Эта часть описана в том же классе, что и 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(); }
и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); } }
Собственно, проблема вот в чём. Обнаружилось падение приложения с WSERV 8, определил, что по каким-то неведомым мне причинам iStatus вовсе не равняется KErrNone, и поэтому часть кода не выполняется. Подскажите хоть в какую сторону копать, а то что-то совсем мысли кончилисьCode:void CMyServer::RunL() { __LOGSTR("RunL"); if(iIsDraw) { Draw(ETrue); } if(iWaitEvent) { WaitWgEvent(); } if(iGetEvent) { GetWgEvent(); } }


Reply With Quote

