Add useful functions to <sortix/kernel/video.h> API.
This commit is contained in:
parent
9a608e5bb2
commit
b380dd49c1
|
@ -54,6 +54,10 @@ namespace Video {
|
||||||
void Init(TextBufferHandle* textbufhandle);
|
void Init(TextBufferHandle* textbufhandle);
|
||||||
bool RegisterDriver(const char* name, VideoDriver* driver);
|
bool RegisterDriver(const char* name, VideoDriver* driver);
|
||||||
char* GetCurrentMode();
|
char* GetCurrentMode();
|
||||||
|
char* GetDriverName(size_t index);
|
||||||
|
size_t GetCurrentDriverIndex();
|
||||||
|
size_t GetNumDrivers();
|
||||||
|
size_t LookupDriverIndexOfMode(const char* mode);
|
||||||
bool Supports(const char* mode);
|
bool Supports(const char* mode);
|
||||||
bool SwitchMode(const char* mode);
|
bool SwitchMode(const char* mode);
|
||||||
char** GetModes(size_t* modesnum);
|
char** GetModes(size_t* modesnum);
|
||||||
|
|
|
@ -120,6 +120,26 @@ void Init(TextBufferHandle* thetextbufhandle)
|
||||||
currentmode = NULL;
|
currentmode = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t GetCurrentDriverIndex()
|
||||||
|
{
|
||||||
|
ScopedLock lock(&videolock);
|
||||||
|
return currentdrvid;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t GetNumDrivers()
|
||||||
|
{
|
||||||
|
ScopedLock lock(&videolock);
|
||||||
|
return numdrivers;
|
||||||
|
}
|
||||||
|
|
||||||
|
char* GetDriverName(size_t index)
|
||||||
|
{
|
||||||
|
ScopedLock lock(&videolock);
|
||||||
|
if ( numdrivers <= index || !drivers[index].name )
|
||||||
|
return String::Clone("none");
|
||||||
|
return String::Clone(drivers[index].name);
|
||||||
|
}
|
||||||
|
|
||||||
static DriverEntry* CurrentDriverEntry()
|
static DriverEntry* CurrentDriverEntry()
|
||||||
{
|
{
|
||||||
if ( currentdrvid == SIZE_MAX ) { return NULL; }
|
if ( currentdrvid == SIZE_MAX ) { return NULL; }
|
||||||
|
@ -413,6 +433,27 @@ bool Supports(const char* mode)
|
||||||
return drvent->driver->Supports(mode);
|
return drvent->driver->Supports(mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t LookupDriverIndexOfMode(const char* mode)
|
||||||
|
{
|
||||||
|
const char* needle = "driver=";
|
||||||
|
size_t needlelen = strlen(needle);
|
||||||
|
while ( *mode )
|
||||||
|
{
|
||||||
|
if ( !strncmp(mode, needle, needlelen) )
|
||||||
|
{
|
||||||
|
const char* name = mode + needlelen;
|
||||||
|
size_t namelen = strcspn(name, ",");
|
||||||
|
ScopedLock lock(&videolock);
|
||||||
|
for ( size_t i = 0; i < numdrivers; i++ )
|
||||||
|
if ( !strncmp(drivers[i].name, name, namelen) )
|
||||||
|
return i;
|
||||||
|
return SIZE_MAX;
|
||||||
|
}
|
||||||
|
mode += strcspn(mode, ",") + 1;
|
||||||
|
}
|
||||||
|
return SIZE_MAX;
|
||||||
|
}
|
||||||
|
|
||||||
off_t FrameSize()
|
off_t FrameSize()
|
||||||
{
|
{
|
||||||
ScopedLock lock(&videolock);
|
ScopedLock lock(&videolock);
|
||||||
|
|
Loading…
Reference in New Issue