Changeset 37769 in vbox
- Timestamp:
- Jul 4, 2011 4:40:34 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Graphics/DevVGA.cpp
r37725 r37769 1126 1126 cbLinePitch = calc_line_pitch(cBPP, cX); 1127 1127 Assert(cbLinePitch != 0); 1128 uint 16_t cVirtHeight = s->vram_size / cbLinePitch;1128 uint32_t cVirtHeight = s->vram_size / cbLinePitch; 1129 1129 uint32_t offStart = cbLinePitch * offY; 1130 1130 if (cBPP == 4) … … 1135 1135 s->vbe_line_offset = RT_MIN(cbLinePitch, s->vram_size); 1136 1136 s->vbe_start_addr = RT_MIN(offStart, s->vram_size); 1137 s->vbe_regs[VBE_DISPI_INDEX_VIRT_HEIGHT] = cVirtHeight; 1137 1138 /* The VBE_DISPI_INDEX_VIRT_HEIGHT is used to prevent setting resolution bigger than VRAM permits 1139 * it is used instead of VBE_DISPI_INDEX_YRES *only* in case 1140 * s->vbe_regs[VBE_DISPI_INDEX_VIRT_HEIGHT] < s->vbe_regs[VBE_DISPI_INDEX_YRES] 1141 * We can not simply do s->vbe_regs[VBE_DISPI_INDEX_VIRT_HEIGHT] = cVirtHeight since 1142 * the cVirtHeight we calculated can exceed the 16bit value range 1143 * instead we'll check if it's bigger than s->vbe_regs[VBE_DISPI_INDEX_YRES], and if yes, 1144 * assign the s->vbe_regs[VBE_DISPI_INDEX_VIRT_HEIGHT] with a dummy UINT16_MAX value 1145 * that is always bigger than s->vbe_regs[VBE_DISPI_INDEX_YRES] 1146 * to just ensure the s->vbe_regs[VBE_DISPI_INDEX_YRES] is always used */ 1147 s->vbe_regs[VBE_DISPI_INDEX_VIRT_HEIGHT] = (cVirtHeight >= (uint32_t)s->vbe_regs[VBE_DISPI_INDEX_YRES]) ? UINT16_MAX : (uint16_t)cVirtHeight; 1138 1148 } 1139 1149 }
Note:
See TracChangeset
for help on using the changeset viewer.