diff options
| author | Javier <dev.git@javispedro.com> | 2022-04-03 21:41:22 +0200 | 
|---|---|---|
| committer | Javier <dev.git@javispedro.com> | 2022-04-03 21:41:22 +0200 | 
| commit | 68979e8afd471f16c5a39888fbeaa23c2240651e (patch) | |
| tree | 053d25f84e436b2b58fa34af1c3e3ba466d40441 | |
| parent | a5abb118e0e61587adfa7b4e4cc72948311381d3 (diff) | |
| download | vbados-68979e8afd471f16c5a39888fbeaa23c2240651e.tar.gz vbados-68979e8afd471f16c5a39888fbeaa23c2240651e.zip | |
write full bytes instead of pixels
| -rw-r--r-- | dostsr.c | 14 | 
1 files changed, 8 insertions, 6 deletions
| @@ -226,6 +226,7 @@ static void show_graphic_cursor(void)  			uint16_t cursor_xor_mask = get_graphic_cursor_xor_mask_line(offset.y + y)  			                           << offset.x;  			uint8_t pixel_mask = msb_pixel_mask; +			uint8_t pixel = *line;  			unsigned x;  			// First, backup this scanline to prev before any changes @@ -240,23 +241,19 @@ static void show_graphic_cursor(void)  			}  			for (x = 0; x < size.x; x++) { -				uint8_t pixel = *line; -  				if (!(cursor_and_mask & MSB_MASK)) {  					pixel &= ~pixel_mask;  				}  				if (cursor_xor_mask & MSB_MASK) {  					pixel ^= pixel_mask;  				} -				if (!(cursor_and_mask & MSB_MASK) || (cursor_xor_mask & MSB_MASK)) { -					*line = pixel; -				}  				// Advance to the next pixel  				pixel_mask >>= info->bits_per_pixel;  				if (!pixel_mask) {  					// Time to advance to the next byte -					line++; +					*line = pixel; // Save current byte first +					pixel = *(++line);  					pixel_mask = msb_pixel_mask;  				} @@ -264,6 +261,11 @@ static void show_graphic_cursor(void)  				cursor_and_mask <<= 1;  				cursor_xor_mask <<= 1;  			} + +			if (pixel_mask != msb_pixel_mask) { +				// We ended up in the middle of a byte, save it +				*line = pixel; +			}  		}  	} | 
