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