X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FModules%2FDisplay%2FVESA%2Fmain.c;h=8cb37288be370e54d343759fff50b8d4f709238b;hb=bc0891c777a5dc356ec383e54b360bed89d0dd76;hp=3f2f1c9cea56a10968f3b2838e5fa226a95be9a6;hpb=47f84632cc84aa1cb625bf5aa90a35539c60eb77;p=tpg%2Facess2.git diff --git a/KernelLand/Modules/Display/VESA/main.c b/KernelLand/Modules/Display/VESA/main.c index 3f2f1c9c..8cb37288 100644 --- a/KernelLand/Modules/Display/VESA/main.c +++ b/KernelLand/Modules/Display/VESA/main.c @@ -19,7 +19,7 @@ #define FLAG_POPULATED 0x2 #define FLAG_VALID 0x4 #define VESA_DEFAULT_FRAMEBUFFER (KERNEL_BASE|0xA0000) -#define BLINKING_CURSOR 1 +#define BLINKING_CURSOR 0 #if BLINKING_CURSOR # define VESA_CURSOR_PERIOD 1000 #endif @@ -27,7 +27,7 @@ // === PROTOTYPES === int Vesa_Install(char **Arguments); int VBE_int_GetModeList(void); -size_t Vesa_Write(tVFS_Node *Node, off_t Offset, size_t Length, const void *Buffer); +size_t Vesa_Write(tVFS_Node *Node, off_t Offset, size_t Length, const void *Buffer, Uint Flags); int Vesa_IOCtl(tVFS_Node *Node, int ID, void *Data); int Vesa_Int_SetMode(int Mode); int Vesa_Int_FindMode(tVideo_IOCtl_Mode *data); @@ -67,11 +67,19 @@ tTimer *gpVesaCursorTimer; int gbVesa_CursorVisible = 0; // --- 2D Video Stream Handlers --- tDrvUtil_Video_BufInfo gVesa_BufInfo; +// --- Settings --- +// int gbVesa_DisableFBCache; // Disables the main-memory framebuffer cache // === CODE === int Vesa_Install(char **Arguments) { int rv; + +// for( int i = 0; Arguments[i]; i ++ ) +// { +// if( strcmp(Aguments[i], "nocache") == 0 ) +// gbVesa_DisableFBCache = 1; +// } gpVesa_BiosState = VM8086_Init(); @@ -257,7 +265,7 @@ void Vesa_int_FillModeList(void) /** * \brief Write to the framebuffer */ -size_t Vesa_Write(tVFS_Node *Node, off_t Offset, size_t Length, const void *Buffer) +size_t Vesa_Write(tVFS_Node *Node, off_t Offset, size_t Length, const void *Buffer, Uint Flags) { if( gVesa_Modes[giVesaCurrentMode].framebuffer == 0 ) { Log_Warning("VESA", "Vesa_Write - Non-LFB Modes not yet supported."); @@ -323,7 +331,9 @@ int Vesa_Int_SetMode(int mode) Vesa_int_FillModeList(); + #if BLINKING_CURSOR Time_RemoveTimer(gpVesaCursorTimer); + #endif Mutex_Acquire( &glVesa_Lock ); @@ -359,6 +369,8 @@ int Vesa_Int_SetMode(int mode) Mutex_Release( &glVesa_Lock ); + gVesa_BufInfo.BackBuffer = realloc(gVesa_BufInfo.BackBuffer, + gVesa_Modes[mode].height * gVesa_Modes[mode].pitch); gVesa_BufInfo.Framebuffer = gpVesa_Framebuffer; gVesa_BufInfo.Pitch = gVesa_Modes[mode].pitch; gVesa_BufInfo.Width = gVesa_Modes[mode].width;