Modules/PL110 - added static cursor support
authorJohn Hodge <[email protected]>
Fri, 28 Oct 2011 05:08:00 +0000 (13:08 +0800)
committerJohn Hodge <[email protected]>
Fri, 28 Oct 2011 05:08:00 +0000 (13:08 +0800)
Modules/Display/PL110/main.c

index 6fa8598..285cec4 100644 (file)
@@ -100,6 +100,7 @@ tPAddr      gPL110_FramebufferPhys;
 void   *gpPL110_Framebuffer;\r
 // -- Misc\r
 tDrvUtil_Video_BufInfo gPL110_DrvUtil_BufInfo;\r
+tVideo_IOCtl_Pos       gPL110_CursorPos;\r
 \r
 // === CODE ===\r
 /**\r
@@ -156,8 +157,11 @@ int PL110_IOCtl(tVFS_Node *Node, int ID, void *Data)
        BASE_IOCTLS(DRV_TYPE_VIDEO, "PL110", VERSION, csaPL110_IOCtls);\r
 \r
        case VIDEO_IOCTL_SETBUFFORMAT:\r
+               DrvUtil_Video_RemoveCursor( &gPL110_DrvUtil_BufInfo );\r
                ret = giPL110_BufferMode;\r
                if(Data)        giPL110_BufferMode = *(int*)Data;\r
+               if(gPL110_DrvUtil_BufInfo.BufferFormat == VIDEO_BUFFMT_TEXT)\r
+                       DrvUtil_Video_SetCursor( &gPL110_DrvUtil_BufInfo, &gDrvUtil_TextModeCursor );\r
                break;\r
        \r
        case VIDEO_IOCTL_GETSETMODE:\r
@@ -244,7 +248,26 @@ int PL110_IOCtl(tVFS_Node *Node, int ID, void *Data)
                break;\r
                }\r
        \r
-       case VIDEO_IOCTL_SETCURSOR:     break;\r
+       case VIDEO_IOCTL_SETCURSOR:\r
+               if( !Data || !CheckMem(Data, sizeof(tVideo_IOCtl_Pos)) )\r
+                       LEAVE_RET('i', -1);\r
+\r
+               DrvUtil_Video_RemoveCursor( &gPL110_DrvUtil_BufInfo );\r
+               \r
+               gPL110_CursorPos = *(tVideo_IOCtl_Pos*)Data;\r
+               if(gPL110_DrvUtil_BufInfo.BufferFormat == VIDEO_BUFFMT_TEXT)\r
+                       DrvUtil_Video_DrawCursor(\r
+                               &gPL110_DrvUtil_BufInfo,\r
+                               gPL110_CursorPos.x*giVT_CharWidth,\r
+                               gPL110_CursorPos.y*giVT_CharHeight\r
+                               );\r
+               else\r
+                       DrvUtil_Video_DrawCursor(\r
+                               &gPL110_DrvUtil_BufInfo,\r
+                               gPL110_CursorPos.x,\r
+                               gPL110_CursorPos.y\r
+                               );\r
+               break;\r
        \r
        default:\r
                LEAVE('i', -2);\r

UCC git Repository :: git.ucc.asn.au