X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;ds=sidebyside;f=Kernel%2Fdrvutil.c;h=bac78948e0a72a9a42185faa001817257c2ad89b;hb=82adac267bc089391397b36413bba210a8e7c68f;hp=99d02f6235e0b2a69349e8a0ab16ef815cbf6a5f;hpb=56f357ade393dc9e2c928971cfbd690dab72db18;p=tpg%2Facess2.git diff --git a/Kernel/drvutil.c b/Kernel/drvutil.c index 99d02f62..bac78948 100644 --- a/Kernel/drvutil.c +++ b/Kernel/drvutil.c @@ -12,13 +12,14 @@ Uint64 DrvUtil_Video_2DStream(void *Ent, void *Buffer, int Length, tDrvUtil_Video_2DHandlers *Handlers, int SizeofHandlers) { - Uint8 *stream = Buffer; + void *stream = Buffer; int rem = Length; int op; while( rem ) { rem --; - op = *stream++; + op = *(Uint8*)stream; + stream = (void*)((tVAddr)stream + 1); if(op > NUM_VIDEO_2DOPS) { Log_Warning("DrvUtil", "DrvUtil_Video_2DStream: Unknown" @@ -46,17 +47,17 @@ Uint64 DrvUtil_Video_2DStream(void *Ent, void *Buffer, int Length, Handlers->Fill( Ent, - *(Uint16*)(&stream[0]), *(Uint16*)(&stream[2]), - *(Uint16*)(&stream[4]), *(Uint16*)(&stream[6]), - *(Uint32*)(&stream[8]) + ((Uint16*)stream)[0], ((Uint16*)stream)[1], + ((Uint16*)stream)[2], ((Uint16*)stream)[3], + ((Uint32*)stream)[4] ); rem -= 12; - stream += 12; + stream = (void*)((tVAddr)stream + 12); break; case VIDEO_2DOP_BLIT: - if(rem < 12) return Length-rem; + if(rem < 16) return Length-rem; if(!Handlers->Blit) { Log_Warning("DrvUtil", "DrvUtil_Video_2DStream: Driver" @@ -66,13 +67,13 @@ Uint64 DrvUtil_Video_2DStream(void *Ent, void *Buffer, int Length, Handlers->Blit( Ent, - *(Uint16*)(&stream[0]), *(Uint16*)(&stream[2]), - *(Uint16*)(&stream[4]), *(Uint16*)(&stream[6]), - *(Uint16*)(&stream[8]), *(Uint16*)(&stream[10]) + ((Uint16*)stream)[0], ((Uint16*)stream)[1], + ((Uint16*)stream)[2], ((Uint16*)stream)[3], + ((Uint16*)stream)[4], ((Uint16*)stream)[5] ); - rem -= 12; - stream += 12; + rem -= 16; + stream = (void*)((tVAddr)stream + 16); break; } @@ -112,7 +113,7 @@ Uint64 DrvUtil_ReadBlock(Uint64 Start, Uint64 Length, void *Buffer, return leading; } - Buffer += leading; + Buffer = (Uint8*)Buffer + leading; block ++; num = ( Length - leading ) / BlockSize; tailings = Length - num * BlockSize - leading; @@ -138,7 +139,7 @@ Uint64 DrvUtil_ReadBlock(Uint64 Start, Uint64 Length, void *Buffer, { LOG("Reading %i bytes from last block", tailings); block += num; - Buffer += num * BlockSize; + Buffer = (Uint8*)Buffer + num * BlockSize; ret = ReadBlocks(block, 1, tmp, Argument); if(ret != 1) { LEAVE('X', leading + num * BlockSize); @@ -191,7 +192,7 @@ Uint64 DrvUtil_WriteBlock(Uint64 Start, Uint64 Length, void *Buffer, return leading; } - Buffer += leading; + Buffer = (Uint8*)Buffer + leading; block ++; num = ( Length - leading ) / BlockSize; tailings = Length - num * BlockSize - leading; @@ -217,7 +218,7 @@ Uint64 DrvUtil_WriteBlock(Uint64 Start, Uint64 Length, void *Buffer, { LOG("Writing %i bytes to last block", tailings); block += num; - Buffer += num * BlockSize; + Buffer = (Uint8*)Buffer + num * BlockSize; // Read ret = ReadBlocks(block, 1, tmp, Argument); if(ret != 1) {