Hi,

I am attaching some patches to the directfb examples package for
inclusion

1) update df_dioload for 2.6 kernels
2) df_porter shows what is hardware accelerated
3) df_window fix DirectFB version check

Cheers,
Andre'

>From 37ed6cef536d02a1b19915e7ca3012b7487d1740 Mon Sep 17 00:00:00 2001
From: =?utf-8?q?Andr=C3=A9=20Draszik?= <andre.dras...@st.com>
Date: Mon, 14 Jan 2008 13:25:05 +0000
Subject: [PATCH] Make df_dioload work with 2.6 kernels, too.
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit

Signed-off by: André Draszik <andre.dras...@st.com>
---
 src/df_dioload.c |   74 +++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 62 insertions(+), 12 deletions(-)

diff --git a/src/df_dioload.c b/src/df_dioload.c
index 5eeeb69..b09f7d3 100644
--- a/src/df_dioload.c
+++ b/src/df_dioload.c
@@ -201,21 +201,71 @@ static void total_dio(double *r_total, double *w_total)
      unsigned long  writesec = 0;
      FILE          *stat;
 
-     stat = fopen ("/proc/stat", "r");
-     if (!stat)
-          return;
+     static int once = 1;
+     int        kernel = 0;
 
-     while (fgets (buf, 64*1024, stat)) {
-       if (strncmp("disk_io:",buf,sizeof("disk_io:")-1))
-         continue;
+     stat = fopen ("/proc/diskstats", "r"); /* try 2.6 kernel interface first */
+     if (stat) {
+       kernel = 260;
+     } else {
+       /* might be 2.4 */
+       stat = fopen ("/proc/stat", "r");
+       if (stat)
+         kernel = 240;
+     }
+     if (!stat) {
+       if (once) {
+         fprintf (stderr, "don't know about this kernel\n");
+         once = 0;
+       }
+       return;
+     }
 
+     while (fgets (buf, 64*1024, stat)) {
        tmp = buf;
-       while ((tmp = strchr(tmp,' '))) {
-         tmp++;
-         if (sscanf (tmp, "(%lu,%lu):(%lu,%lu,%lu,%lu,%lu)", &dummy, &dummy, &dummy, &dummy, &readsec, &dummy, &writesec) < 7)
-           continue;
-         new_r_total += readsec;
-         new_w_total += writesec;
+
+       switch (kernel) {
+         case 260:
+           {
+           char dummystr[30];
+
+           if (sscanf (tmp, "%lu %lu %s %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu)",
+                       &dummy, &dummy, /* maj, min */
+                       dummystr,       /* name */
+                       &readsec,       /* # of reads issued */
+                       &dummy,         /* # of reads merged */
+                       &dummy,         /* # of sectors read */
+                       &dummy,         /* # of milliseconds spent reading */
+                       &writesec,      /* # of writes completed */
+                       &dummy,         /* # of writes merged */
+                       &dummy,         /* # of sectors written */
+                       &dummy,         /* # of milliseconds spent writing */
+                       &dummy,         /* # of I/Os currently in progress */
+                       &dummy,         /* # of milliseconds spent doing I/O */
+                       &dummy          /* weighted # of milliseconds spent doing I/O */
+                       ) != 14)
+             continue;
+           new_r_total += readsec;
+           new_w_total += writesec;
+           }
+           break;
+
+         case 240:
+           if (strncmp("disk_io:",buf,sizeof("disk_io:")-1))
+             break;
+
+           while ((tmp = strchr(tmp,' '))) {
+             tmp++;
+             if (sscanf (tmp, "(%lu,%lu):(%lu,%lu,%lu,%lu,%lu)", &dummy, &dummy, &dummy, &dummy, &readsec, &dummy, &writesec) < 7)
+               continue;
+             new_r_total += readsec;
+             new_w_total += writesec;
+           }
+           break;
+
+         default:
+           /* shouldn't be reached */
+           break;
        }
      }
 
-- 
1.6.0.4

>From 1d8fea37e7beed29662d684b9b3a7a5b0d212e62 Mon Sep 17 00:00:00 2001
From: =?utf-8?q?Andr=C3=A9=20Draszik?= <andre.dras...@st.com>
Date: Wed, 27 Aug 2008 14:06:40 +0100
Subject: [PATCH] (df_porter) make it easy to spot which ops are accelerated
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit

by displaying a '*' for operations that are hardware accelerated

Signed-off by: André Draszik <andre.dras...@st.com>
---
 src/df_porter.c |   20 ++++++++++++++++----
 1 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/src/df_porter.c b/src/df_porter.c
index 9064799..b85a72a 100644
--- a/src/df_porter.c
+++ b/src/df_porter.c
@@ -58,13 +58,15 @@ static IDirectFBEventBuffer *events;
            }                                                                   \
         }
 
-static char *rules[] = { "CLEAR", "SRC", "SRC OVER", "DST OVER",
-                         "SRC IN", "DST IN", "SRC OUT", "DST OUT",
-                         "SRC ATOP", "DST ATOP", "ADD", "XOR" };
+static char *rules[] = { " CLEAR", " SRC", " SRC OVER", " DST OVER",
+                         " SRC IN", " DST IN", " SRC OUT", " DST OUT",
+                         " SRC ATOP", " DST ATOP", " ADD", " XOR" };
 static int num_rules = sizeof( rules ) / sizeof( rules[0] );
 
 static int screen_width, screen_height;
 
+#include <stdlib.h>
+#include <string.h>
 int main( int argc, char *argv[] )
 {
      int                     i;
@@ -153,6 +155,10 @@ int main( int argc, char *argv[] )
      for (i=0; i<num_rules; i++) {
           int x = (1 + i % 4) * step;
           int y = (0 + i / 4) * 180;
+          DFBAccelerationMask mask;
+          char *str;
+
+          str = strdup( rules[i] );
 
           tempsurf->SetPorterDuff( tempsurf, DSPD_SRC );
           tempsurf->SetColor( tempsurf, 255, 0, 0, 140 );
@@ -162,9 +168,15 @@ int main( int argc, char *argv[] )
           tempsurf->SetColor( tempsurf, 0, 0, 255, 200 );
           tempsurf->FillRectangle( tempsurf, x - 30, y + 130, 80, 70 );
 
+          tempsurf->GetAccelerationMask( tempsurf, NULL, &mask );
+          if (mask & DFXL_FILLRECTANGLE)
+               str[0] = '*';
+
           tempsurf->SetPorterDuff( tempsurf, DSPD_SRC_OVER );
           tempsurf->SetColor( tempsurf, 6*0x1F, 6*0x10+0x7f, 0xFF, 0xFF );
-          tempsurf->DrawString( tempsurf, rules[i], -1, x, y + 210, DSTF_CENTER | DSTF_TOP );
+          tempsurf->DrawString( tempsurf, str, -1, x, y + 210, DSTF_CENTER | DSTF_TOP );
+
+          free( str );
      }
 
      font->Release( font );
-- 
1.6.0.4

>From 2954cb8ec372dc182d3e6eb9554cb8a3ee7d7948 Mon Sep 17 00:00:00 2001
From: =?utf-8?q?Andr=C3=A9=20Draszik?= <andre.dras...@st.com>
Date: Tue, 9 Jun 2009 12:40:33 +0100
Subject: [PATCH] (df_window) make DirectFB version check actually work
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit

Signed-off-by: André Draszik <andre.dras...@st.com>
---
 src/df_window.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/src/df_window.c b/src/df_window.c
index 562e82c..f7e1ff4 100644
--- a/src/df_window.c
+++ b/src/df_window.c
@@ -36,6 +36,7 @@
 
 #include <directfb.h>
 #include <directfb_util.h>
+#include <directfb_version.h>
 
 #include <direct/util.h>
 
-- 
1.6.0.4

_______________________________________________
directfb-dev mailing list
directfb-dev@directfb.org
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev

Reply via email to