cpjamloki
Visitor
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-12-2015
07:11 AM
robitmap in legacy device
Facing problem in legacy device in case of robitmap.
in case of nonlegacy device below code is working good. but for legacy device(version 3.0) robitmap object giving problem.
first time
but next time for second image(loop increment by 1) it's not creating object. and jump in else part
is it legacy device problem for robitmap?
any suggestion would be thankful.
in case of nonlegacy device below code is working good. but for legacy device(version 3.0) robitmap object giving problem.
first time
m.bMapImage = createobject("roBitmap", getting single images here)m.bitmapimage creating robitmap object for first image.
but next time for second image(loop increment by 1) it's not creating object. and jump in else part
print "BMAPIMAGE_IS_INVALID ".
is it legacy device problem for robitmap?
for j=0 to 9 step 1
if(m.bMapImage<>invalid)
m.bMapImage.clear(m.white)
end if
m.bMapImage = createobject("roBitmap", getting single images here)
m.msgport1 = CreateObject("roMessagePort")
if isLegacyDevice()
m.screen.SetPort(m.msgport1)
else
m.screen.SetMessagePort(m.msgport1)
end if
codes = bslUniversalControlEventCodes()
msg1=wait(1700, m.msgport1)
if m.bMapImage <> invalid
m.screen.DrawScaledObject(FIX(marginX), FIX(marginY), imageWidth / m.bMapImage.GetWidth(), imageHeight / m.bMapImage.GetHeight(),m.bMapImage)
else
print "BMAPIMAGE_IS_INVALID "
end if
end for
any suggestion would be thankful.
3 REPLIES 3
Rek
Visitor
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-12-2015
08:30 AM
Re: robitmap in legacy device
It could be you're running out of video memory. When you run out of video memory, a call to createObject("roBitmap", ...) will just return invalid.
Each iteration of the for-loop, you're allocating a new bitmap, but the old one(s) don't get de-allocated unless you call screen.finish() or screen.SwapBuffers() (depends on if your screen is single or double buffered).
You can verify the video memory usage by telnetting to your roku on port 8080, then running the command: r2d2_bitmaps
Each iteration of the for-loop, you're allocating a new bitmap, but the old one(s) don't get de-allocated unless you call screen.finish() or screen.SwapBuffers() (depends on if your screen is single or double buffered).
You can verify the video memory usage by telnetting to your roku on port 8080, then running the command: r2d2_bitmaps

RokuMarkn
Visitor
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-12-2015
09:34 AM
Re: robitmap in legacy device
A couple small comments on your code:
1. I'm not sure exactly what this code is supposed to be doing, but the lack of SwapBuffers/Finish is a major omission. If this code displays anything on the screen it's accidental.
2.You can use SetPort on non-legacy devices. You don't need to test for legacy and call SetMessagePort.
3. The clear at the top of the loop doesn't do anything useful since you destroy the object in the next line. Setting m.bMapImage = invalid would be more appropriate.
--Mark
1. I'm not sure exactly what this code is supposed to be doing, but the lack of SwapBuffers/Finish is a major omission. If this code displays anything on the screen it's accidental.
2.You can use SetPort on non-legacy devices. You don't need to test for legacy and call SetMessagePort.
3. The clear at the top of the loop doesn't do anything useful since you destroy the object in the next line. Setting m.bMapImage = invalid would be more appropriate.
--Mark
cpjamloki
Visitor
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-07-2015
02:59 AM
Re: robitmap in legacy device
thanx Rek . you are right.