projects
/
bootcensus
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
moved over the polyfiller code and implemented blending
[bootcensus]
/
src
/
kmain.c
diff --git
a/src/kmain.c
b/src/kmain.c
index
ad76287
..
99104a2
100644
(file)
--- a/
src/kmain.c
+++ b/
src/kmain.c
@@
-29,12
+29,14
@@
along with this program. If not, see <https://www.gnu.org/licenses/>.
#include "vbe.h"
#include "audio.h"
#include "panic.h"
#include "vbe.h"
#include "audio.h"
#include "panic.h"
+#include "census/census.h"
static int video_init(void);
static int modecmp(const void *a, const void *b);
static struct video_mode vmode;
static int video_init(void);
static int modecmp(const void *a, const void *b);
static struct video_mode vmode;
-static void *fbptr;
+static void *fbptr, *backbuf;
+static int fbsize;
void pcboot_main(void)
void pcboot_main(void)
@@
-60,10
+62,17
@@
void pcboot_main(void)
if(video_init() == -1) {
panic("Failed to find suitable video mode");
}
if(video_init() == -1) {
panic("Failed to find suitable video mode");
}
+ fbsize = vmode.width * vmode.height * vmode.bpp / 8;
+ if(!(backbuf = malloc(fbsize))) {
+ panic("Failed to allocate back buffer");
+ }
+ init_census(backbuf, vmode.width, vmode.height);
for(;;) {
for(;;) {
+ draw_census();
+
wait_vsync();
wait_vsync();
- memset(fbptr, 0x80, vmode.width * vmode.height * vmode.bpp / 8);
+ memcpy(fbptr, backbuf, fbsize);
}
}
}
}
@@
-75,7
+84,7
@@
static int video_init(void)
const char *vendor;
if(mode_idx == -1 && (vendor = get_video_vendor()) && strstr(vendor, "SeaBIOS")) {
const char *vendor;
if(mode_idx == -1 && (vendor = get_video_vendor()) && strstr(vendor, "SeaBIOS")) {
- mode_idx = find_video_mode_idx(800, 600, 0);
+ mode_idx = find_video_mode_idx(800, 600, 32);
}
if(mode_idx == -1 && vbe_get_edid(&edid) == 0 && edid_preferred_resolution(&edid, &xres, &yres) == 0) {
}
if(mode_idx == -1 && vbe_get_edid(&edid) == 0 && edid_preferred_resolution(&edid, &xres, &yres) == 0) {