Fixed a couple of little bugs
This commit is contained in:
parent
e15beac2d7
commit
1334b3e7f0
10
console.c
10
console.c
@ -768,10 +768,12 @@ void do_printf(char *fmt, va_list args) {
|
||||
}
|
||||
|
||||
void kprintf(char *fmt, ...) {
|
||||
va_list args;
|
||||
va_start(args, fmt);
|
||||
do_printf(fmt, args);
|
||||
va_end(args);
|
||||
if (initialized == 1) {
|
||||
va_list args;
|
||||
va_start(args, fmt);
|
||||
do_printf(fmt, args);
|
||||
va_end(args);
|
||||
}
|
||||
}
|
||||
|
||||
void update_cursor(void) {
|
||||
|
39
gui.c
39
gui.c
@ -80,25 +80,41 @@ void init_gui(multiboot_info_t *mbinfo) {
|
||||
serialnos = 0;
|
||||
vidmode = 1;
|
||||
modeinfo = (struct ModeInfoBlock *)mbinfo->vbe_mode_info;
|
||||
framebuffer = (char *)modeinfo->physbase;
|
||||
framebuffer = (unsigned char *)modeinfo->physbase;
|
||||
bytesPerLine = modeinfo->pitch;
|
||||
width = modeinfo->Xres;
|
||||
height = modeinfo->Yres;
|
||||
depth = modeinfo->bpp / 8;
|
||||
gui_pagemap();
|
||||
backbuffer = (unsigned char *)malloc(bytesPerLine * height);
|
||||
memset(backbuffer, 0, bytesPerLine * height);
|
||||
backbuffer = (unsigned char *)malloc(width * height * depth);
|
||||
|
||||
memset(backbuffer, 0, width * height * depth);
|
||||
|
||||
windows = (void *)0;
|
||||
|
||||
//closebtn = (char *)malloc(16 * 16 * 3);
|
||||
//memset(closebtn, 0, 16 * 16 * 3);
|
||||
gui_convert_xpm(close_xpm, &closebtn);
|
||||
|
||||
|
||||
gui_convert_xpm(pointer_xpm, &mouseptr);
|
||||
//mouseptr = (char *)malloc(32 * 32 * 3);
|
||||
//memset(mouseptr, 0, 32 * 32 * 3);
|
||||
|
||||
|
||||
gui_convert_xpm(minimize_xpm, &minimizebtn);
|
||||
|
||||
//minimizebtn = (char *)malloc(16 * 16 * 3);
|
||||
//memset(minimizebtn, 0, 16 * 16 * 3);
|
||||
|
||||
gui_convert_xpm(defaulticon_xpm, &defaulticon);
|
||||
//defaulticon = (char *)malloc(64 * 64 * 3);
|
||||
//memset(defaulticon, 0, 64 * 64 * 3);
|
||||
|
||||
wallpaper = (void *)0;
|
||||
wallpaper_lock = 0;
|
||||
//gui_convert_xpm(wallpaper_xpm, &wallpaper);
|
||||
//BochsBreak();
|
||||
} else {
|
||||
vidmode = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -230,7 +246,6 @@ void gui_convert_xpm(char **xpm, unsigned char **buffer) {
|
||||
*buffer = ptr;
|
||||
memset(ptr, 0, bwidth * bheight * 3);
|
||||
|
||||
|
||||
int boffset = 0;
|
||||
int match;
|
||||
for (i=0;i<bheight;i++) {
|
||||
@ -261,22 +276,20 @@ void gui_convert_xpm(char **xpm, unsigned char **buffer) {
|
||||
|
||||
|
||||
free(theColours);
|
||||
for (i=0;i<charsperpixel;i++) {
|
||||
|
||||
for (i=0;i<colours;i++) {
|
||||
free(theKeys[i]);
|
||||
}
|
||||
free(theKeys);
|
||||
}
|
||||
|
||||
void gui_display_pointer() {
|
||||
int x;
|
||||
int y;
|
||||
render(backbuffer, mouseptr, 32, 32, mouse_pos_x, mouse_pos_y, width, height, 3);
|
||||
//flip();
|
||||
}
|
||||
|
||||
void gui_draw_char(unsigned char *buffer, unsigned int dest_width, unsigned int dest_height, unsigned int x, unsigned int y, char c, unsigned int colour) {
|
||||
int i;
|
||||
int l;
|
||||
|
||||
for (i=0;i<font.Chars;i++) {
|
||||
if (font.Index[i] == c) break;
|
||||
}
|
||||
@ -420,9 +433,7 @@ void gui_drawtitlebar(unsigned char *buffer, unsigned int dest_width, unsigned i
|
||||
}
|
||||
|
||||
void gui_pagemap() {
|
||||
if (vidmode == 1) {
|
||||
framebuffer = mem_map_framebuffer((unsigned int)framebuffer, bytesPerLine * height);
|
||||
}
|
||||
framebuffer = mem_map_framebuffer((unsigned int)framebuffer, bytesPerLine * height);
|
||||
}
|
||||
|
||||
void gui_find_icon_space(struct window_t *window) {
|
||||
|
2
loader.s
2
loader.s
@ -27,7 +27,7 @@ align 4
|
||||
dd 0
|
||||
dd 1024
|
||||
dd 768
|
||||
dd 24
|
||||
dd 32
|
||||
; reserve initial kernel stack space
|
||||
STACKSIZE equ 0x4000 ; that's 16k.
|
||||
|
||||
|
16
memory.c
16
memory.c
@ -91,7 +91,9 @@ void init_mem(multiboot_info_t *mbd) {
|
||||
mem_end = mod->mod_end;
|
||||
}
|
||||
|
||||
pages_above_kernel -= (round_up_to_page(mem_end) / PAGE_SIZE);
|
||||
mem_end = round_up_to_page(mem_end);
|
||||
|
||||
pages_above_kernel -= (mem_end / PAGE_SIZE);
|
||||
|
||||
#ifdef MEM_DEBUG
|
||||
pageframes = (struct mem_frame_t *)mem_end;
|
||||
@ -123,6 +125,8 @@ void init_mem(multiboot_info_t *mbd) {
|
||||
}
|
||||
|
||||
#endif
|
||||
mem_reserve(0x00f00000, 256); // ISA HOLE
|
||||
|
||||
kernel_ds_at = (unsigned char *)0;
|
||||
pci_mem_at = (unsigned char *)0x20000000;
|
||||
}
|
||||
@ -523,15 +527,12 @@ unsigned char *mem_map_page(unsigned int phys, unsigned int virt, int flags) {
|
||||
unsigned char *mem_map_framebuffer(unsigned int phys, unsigned int fb_length) {
|
||||
unsigned int virt = 0xe0000000;
|
||||
|
||||
fb_length += 0x1000;
|
||||
fb_length &= 0xFFFFF000;
|
||||
|
||||
int i;
|
||||
int i, j;
|
||||
|
||||
unsigned int start = phys & 0xFFFFF000;
|
||||
|
||||
framebuffer_start = start;
|
||||
framebuffer_len = fb_length;
|
||||
framebuffer_len = round_up_to_page(fb_length);
|
||||
|
||||
for (i=start;i<start+fb_length;i+= 0x1000) {
|
||||
|
||||
@ -546,6 +547,9 @@ unsigned char *mem_map_framebuffer(unsigned int phys, unsigned int fb_length) {
|
||||
// table doesnt exist, create it.
|
||||
pd_map[dir_entry] = (unsigned int)mem_alloc() | 3;
|
||||
ivld_tlb(virt);
|
||||
for (j=0;j<1023;j++) {
|
||||
pt_map[j] = 0x2;
|
||||
}
|
||||
}
|
||||
pt_map[table_entry] = i | 3;
|
||||
ivld_tlb(virt);
|
||||
|
@ -118,7 +118,7 @@ void convert_xpm(char **xpm, unsigned char **buffer) {
|
||||
}
|
||||
}
|
||||
free(theColours);
|
||||
for (i=0;i<charsperpixel;i++) {
|
||||
for (i=0;i<colours;i++) {
|
||||
free(theKeys[i]);
|
||||
}
|
||||
free(theKeys);
|
||||
|
Loading…
x
Reference in New Issue
Block a user