diff options
Diffstat (limited to 'dev/kernel/src')
| -rw-r--r-- | dev/kernel/src/Gfx/FBDeviceInterface.cc | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/dev/kernel/src/Gfx/FBDeviceInterface.cc b/dev/kernel/src/Gfx/FBDeviceInterface.cc index a9b2be29..525f32b4 100644 --- a/dev/kernel/src/Gfx/FBDeviceInterface.cc +++ b/dev/kernel/src/Gfx/FBDeviceInterface.cc @@ -29,6 +29,13 @@ FBDeviceInterface& FBDeviceInterface::operator<<(FBDevicePacket* pckt) if (!pckt) return *this; + if (pckt->fHeight == 0 || pckt->fWidth == 0) + return *this; + + if (pckt->fX > kHandoverHeader->f_GOP.f_Width || + pckt->fY > kHandoverHeader->f_GOP.f_Height) + return *this; + FBDrawInRegion(pckt->fColor, pckt->fHeight, pckt->fWidth, pckt->fY, pckt->fX); return *this; @@ -42,6 +49,10 @@ FBDeviceInterface& FBDeviceInterface::operator>>(FBDevicePacket* pckt) if (!pckt) return *this; + if (pckt->fX > kHandoverHeader->f_GOP.f_Width || + pckt->fY > kHandoverHeader->f_GOP.f_Height) + return *this; + pckt->fColor = *(((Kernel::UInt32*)(kHandoverHeader->f_GOP.f_The + 4 * kHandoverHeader->f_GOP.f_PixelPerLine * pckt->fX + |
