summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--nuttx/ChangeLog4
-rw-r--r--nuttx/Documentation/NuttX.html6
-rwxr-xr-xnuttx/Documentation/NuttXLinks.html6
-rw-r--r--nuttx/TODO11
-rw-r--r--nuttx/graphics/nxglib/fb/nxglib_moverectangle.c51
5 files changed, 51 insertions, 27 deletions
diff --git a/nuttx/ChangeLog b/nuttx/ChangeLog
index f363cb126..966efa8fa 100644
--- a/nuttx/ChangeLog
+++ b/nuttx/ChangeLog
@@ -1185,3 +1185,7 @@
* examples/nsh/nsh_telnetd.c - Fix compilation errors that happen
when both DHCPC and TELNETD are enabled in the Nuttshell.
+ * graphics/nxglib/fb/nxglib_moverectangle.c - Fix a logic error
+ that caused an uninitialized variable warning. I still don't
+ have a test to prove that the changes are correct.
+
diff --git a/nuttx/Documentation/NuttX.html b/nuttx/Documentation/NuttX.html
index 879237f53..9efbe55ec 100644
--- a/nuttx/Documentation/NuttX.html
+++ b/nuttx/Documentation/NuttX.html
@@ -8,7 +8,7 @@
<tr align="center" bgcolor="#e4e4e4">
<td>
<h1><big><font color="#3c34ec"><i>NuttX RTOS</i></font></big></h1>
- <p>Last Updated: August 5, 2010</p>
+ <p>Last Updated: August 7, 2010</p>
</td>
</tr>
</table>
@@ -1858,7 +1858,9 @@ nuttx-5.9 2010-xx-xx Gregory Nutt &lt;spudmonkey@racsa.co.cr&gt;
* examples/nsh/nsh_telnetd.c - Fix compilation errors that happen
when both DHCPC and TELNETD are enabled in the Nuttshell.
-
+ * graphics/nxglib/fb/nxglib_moverectangle.c - Fix a logic error
+ that caused an uninitialized variable warning. I still don't
+ have a test to prove that the changes are correct.
pascal-2.1 2010-xx-xx Gregory Nutt &lt;spudmonkey@racsa.co.cr&gt;
diff --git a/nuttx/Documentation/NuttXLinks.html b/nuttx/Documentation/NuttXLinks.html
index 77e96bcac..972ae8b0e 100755
--- a/nuttx/Documentation/NuttXLinks.html
+++ b/nuttx/Documentation/NuttXLinks.html
@@ -25,8 +25,8 @@
<li><a href="http://sourceforge.net/projects/nuttx/files/" target="_top">Downloads</a></li>
<li><a href="http://sourceforge.net/projects/nuttx/files/buildroot" target="_top">Toolchains</a></li>
<li><a href="http://nuttx.cvs.sourceforge.net/nuttx/" target="_top">Browse CVS</a></li>
- <li><a href="freeports.html" target="header">Free Ports</a></li>
<li><a href="http://dir.gmane.org/gmane.comp.embedded.nuttx" target="_top">gmane</a></li>
+ <li><a href="freeports.html" target="header">Free Ports</a></li>
</td>
</tr>
<tr>
@@ -58,9 +58,9 @@
</tr>
<td>&nbsp</td>
<td align="left" valign="top">
- <a href="http://rss.groups.yahoo.com/group/nuttx/rss"><img src="rss.gif" border="0"></a></td>
+ <a href="http://rss.groups.yahoo.com/group/nuttx/rss" target="_top"><img src="rss.gif" border="0"></a></td>
<tr>
</tr>
</table>
</body>
-</html> \ No newline at end of file
+</html>
diff --git a/nuttx/TODO b/nuttx/TODO
index b97b65cab..598a4ae3f 100644
--- a/nuttx/TODO
+++ b/nuttx/TODO
@@ -12,7 +12,7 @@ NuttX TODO List (Last updated August 7, 2010)
(1) USB (drivers/usbdev)
(5) Libraries (lib/)
(12) File system/Generic drivers (fs/, drivers/)
- (3) Graphics subystem (graphics/)
+ (2) Graphics subystem (graphics/)
(1) Pascal add-on (pcode/)
(1) Documentation (Documentation/)
(6) Build system / Toolchains
@@ -465,15 +465,6 @@ o Graphics subystem (graphics/)
Status: Open
Priority: Low (unless you need the p13201 then it is certainly higher).
- Description: When building for a framebuffer driver, there are warnings that a
- symbol is used before being initialized in graphics/nxglib/ in all
- of the auto-generated files named nxglib_moverectangle_*bpp.c. This
- looks like a real error and must be fixed. I don't think that the
- moverectangle logic is currently being used in any of the examples,
- so this should not be a big problem.
- Status: Open
- Priority: Medium-to-High
-
o Pascal Add-On (pcode/)
^^^^^^^^^^^^^^^^^^^^^^
diff --git a/nuttx/graphics/nxglib/fb/nxglib_moverectangle.c b/nuttx/graphics/nxglib/fb/nxglib_moverectangle.c
index 4b426a10b..9f804c044 100644
--- a/nuttx/graphics/nxglib/fb/nxglib_moverectangle.c
+++ b/nuttx/graphics/nxglib/fb/nxglib_moverectangle.c
@@ -174,44 +174,71 @@ void NXGL_FUNCNAME(nxgl_moverectangle,NXGLIB_SUFFIX)
# endif
#endif
- /* Case 1: The destination position (offset) is above the displayed
- * position (rect)
+ /* sline = address of the first pixel in the top row of the source in
+ * framebuffer memory
*/
- if (offset->y < rect->pt1.y)
- {
- /* Copy the rectangle from top down. */
+ sline = pinfo->fbmem + rect->pt1.y * stride + NXGL_SCALEX(rect->pt1.x);
+
+ /* dline = address of the first pixel in the top row of the destination
+ * in framebuffer memory. We get dline by subtract the offset from the
+ * source position.
+ */
+
+ dline = (FAR uint8_t*)sline - offset->y * stride - NXGL_SCALEX(offset->x);
- sline = pinfo->fbmem + rect->pt1.y * stride + NXGL_SCALEX(rect->pt1.x);
- dline = (FAR uint8_t*)sline - offset->y * stride - NXGL_SCALEX(offset->x);
+ /* Case 1: Is the destination position above the displayed position?
+ * If the Y offset is negative, then the destination is offset to a
+ * postion below (or to the right) in the source in framebuffer memory.
+ */
+
+ if (offset->y < 0)
+ {
+ /* Yes.. Copy the rectangle from top down (i.e., adding the stride
+ * to move to the next, lower row) */
while (rows--)
{
+ /* Copy the row */
+
#if NXGLIB_BITSPERPIXEL < 8
nxgl_lowresmemcpy(dline, sline, width, leadmask, tailmask);
#else
NXGL_MEMCPY(dline, sline, width);
#endif
+ /* Point to the next source/dest row below the current one */
+
dline += stride;
sline += stride;
}
}
- /* Case 2: The destination position (offset) is below the displayed
- * position (rect)
+ /* Case 2: No.. the destination position is above (or to the left of)
+ * the displayed source position
*/
else
{
- /* Copy the rectangle from the bottom up */
+ /* Adjust sline and dline to point to the bottom row (+1) of the
+ * source and destination rectangles in framebuffer memory.
+ */
+
+ unsigned int hoffset = rows * stride;
+ sline += hoffset;
+ dline += hoffset;
- sline = pinfo->fbmem + rect->pt2.y * stride + NXGL_SCALEX(rect->pt1.x);
- dline = (FAR uint8_t*)sline - offset->y * stride - NXGL_SCALEX(offset->x);
+ /* Copy the rectangle from the bottom up (i.e., subtracting stride
+ * to re-position to the previous, higher row) */
while (rows--)
{
+ /* Point to the next source/dest row above the current one */
+
dline -= stride;
sline -= stride;
+
+ /* Copy the row */
+
#if NXGLIB_BITSPERPIXEL < 8
nxgl_lowresmemcpy(dline, sline, width, leadmask, tailmask);
#else