@piru
Well, i try to use your case here:
DBIport[0] = CreateMsgPort();
DBIport[1] = CreateMsgPort();
myScreenbuffer1 = AllocScreenBuffer(screen,NULL, SB_SCREEN_BITMAP);
myScreenbuffer2 = AllocScreenBuffer(screen,NULL, 0);
myScreenbuffer1->sb_DBufInfo->dbi_SafeMessage.mn_ReplyPort = DBIport[0];
myScreenbuffer1->sb_DBufInfo->dbi_DispMessage.mn_ReplyPort = DBIport[1];
myScreenbuffer2->sb_DBufInfo->dbi_SafeMessage.mn_ReplyPort = DBIport[0];
myScreenbuffer2->sb_DBufInfo->dbi_DispMessage.mn_ReplyPort = DBIport[1];
..create context/open screen...
while(1)
{
// ...do some matrix/etc stuff
while(!ChangeScreenBuffer(screen, myScreenbuffer2));
if (! SafeToWrite)
while(! GetMsg(DBIport[0])) Wait(1l<<(DBIport[0]->mp_SigBit));
SafeToWrite=TRUE;
W3D_LockHardware(context);
W3D_ClearDrawRegion(context,0x00000000); // fill screen with black color
W3D_DrawTriStrip(context,&tris);
W3D_UnLockHardware(context);
if (! SafeToChange)
while(! GetMsg(DBIport[1])) Wait(1l<<(DBIport[1]->mp_SigBit));
SafeToChange=TRUE;
while(!ChangeScreenBuffer(screen, myScreenbuffer1));
SafeToChange=FALSE;
SafeToWrite=FALSE;
}
In this case, after running, system halt, and only reboot can help me. If i adding WaitBOVP() in loop, it working, but problem anyway here - blinking of my object.
I just try this:
ChangeScreenBuffer(screen, myScreenbuffer2);
myScreenbuffer2->sb_DBufInfo->dbi_SafeMessage.mn_ReplyPort=0;
W3D_LockHardware(context);
W3D_ClearDrawRegion(context,0x00000000); // fill screen with black color
W3D_DrawTriStrip(context,&tris);
W3D_UnLockHardware(context);
myScreenbuffer2->sb_DBufInfo->dbi_DispMessage.mn_ReplyPort=0;
ChangeScreenBuffer(screen, myScreenbuffer1);
or just:
ChangeScreenBuffer(screen, myScreenbuffer2);
DBIport[0]=0;
W3D_LockHardware(context);
W3D_ClearDrawRegion(context,0x00000000); // fill screen with black color
W3D_DrawTriStrip(context,&tris);
W3D_UnLockHardware(context);
DBIport[1]=0;
ChangeScreenBuffer(screen, myScreenbuffer1);
Result the same. Just halt. If adding WaitBOVP(&(screen)->ViewPort); it works, but the same problem - blinking.