Thanks Chris. I've done that exercise. i implemented the function like this:
{

     surface->Lock(surface, DSLF_READ, &data, &pitch );

return (pointer *)data + pitch*row;

}
I'm unlocking the surface in a different function that caller  will call
after this function.
running this function is aborting the program with this message......

 DirectFBError [>surface->Lock( surface, (DFBSurfaceLockFlags)(DSLF_READ |
DSLF_WRITE), &data, &pitch )]: Resource is locked!
 Can you please help me to understand this phenomena?
On Thu, Dec 23, 2010 at 3:32 PM, Chris Bore <chris_b...@yahoo.co.uk> wrote:

> Well, if your requirement is at base to return a pointer to the pixel data
> in the framebuffer, then Lock is the way to do it. You should then leave the
> surface locked until you use that pointer and are done with it, when you can
> safely unlock it. You could do that for example with standard reference
> counting, or a simple flag.
>
> My point was, that the requirement you have been given (return a pointer
> etc) may be more restrictive than it need be. Perhaps the real requirement,
> for example, is that some function be able to read the pixel values from
> some region, or to write those values so they can appear on the surface - in
> which case there are other ways to do it. And the requirement you have, lets
> you return only the pointer and pitch, but the user will then also need to
> know things like the PixelFormat - and to assume things such as that the
> pixel map is indeed a contiguous memory map, and the pixel format indeed
> matches that returned (rather than both of these being abstractions, which
> is formally what they are). For example some systems abstract the frame
> buffer so that to DirectFB it appears as a contiguous memory map with the
> DirectFB pixel formats, but in fact it is fragmented: when you use the API
> it is fine but if you access via pointer it is not.
>
>
> ==================================
> Chris Bore
> Training Director
> BORES Signal Processing
> ch...@bores.com
> www.bores.com
> +44 (0)1483 740138
>
>
> ------------------------------
> *From:* ravi <ravi...@gmail.com>
> *To:* Chris Bore <chris_b...@yahoo.co.uk>
> *Cc:* Sriram Neelakandan <sriram.neelakan...@gmail.com>;
> directfb-users@directfb.org
> *Sent:* Thu, 23 December, 2010 9:22:12
>
> *Subject:* Re: [directfb-users] accessing the row
>
>  i have a function to implement that  returns a pointer to an array of
> pixels representing the
> pixels in the specified row , or else returns NULL if an error occurred. If
> successful, the returned
> array pointer may point to a temporary buffer or directly into the frame
> buffer.
> (The latter is usually desirable, if possible.)
>
>
> On Thu, Dec 23, 2010 at 2:42 PM, Chris Bore <chris_b...@yahoo.co.uk>wrote:
>
>> Although it is used in DirectFB, I do not recommend using the Lock/Unlock
>> functions. They bypass the API, and raise other issues that can be
>> problematic. I do not think there is ever a case where using Lock to gain
>> direct access to the encapsulated pixel data is really necessary - it can
>> always be done using the standard API. If you explain what you are trying to
>> do then perhaps I can suggest another way to do it.
>>
>> ==================================
>> Chris Bore
>> Training Director
>> BORES Signal Processing
>> ch...@bores.com
>> www.bores.com
>> +44 (0)1483 740138
>>
>>
>> ------------------------------
>> *From:* ravi <ravi...@gmail.com>
>> *To:* Sriram Neelakandan <sriram.neelakan...@gmail.com>
>> *Cc:* directfb-users@directfb.org
>> *Sent:* Thu, 23 December, 2010 4:58:32
>> *Subject:* Re: [directfb-users] accessing the row
>>
>>
>> If i unlock the surface first then how can i return the pointer to the
>> caller? I'm unlocking the surface in a different function that caller  will
>> call after this function.
>> On Thu, Dec 23, 2010 at 10:02 AM, Sriram Neelakandan <
>> sriram.neelakan...@gmail.com> wrote:
>>
>>> well that means the surface is already locked .. u must unlock each Lock
>>> after usage
>>>
>>> 1. Lock
>>> 2. use the pointer
>>> 3. UnLock
>>>
>>>
>>> On Wed, Dec 22, 2010 at 4:31 PM, ravi <ravi...@gmail.com> wrote:
>>>
>>>> Hell,
>>>>            i have a function to implement that returns a pointer to an
>>>> array of pixels representing the
>>>> pixels in the specified row of the surface columns from x (inclusive) to
>>>> x + w
>>>> (exclusive), I implemented it like this......
>>>>
>>>> {  void      *data;
>>>>      int        pitch;
>>>>         surface->Lock(surface, DSLF_READ, &data, &pitch );
>>>>
>>>> return (pointer *)data + pitch*row;
>>>>
>>>> }
>>>>
>>>> running this function is aborting the program with this message......
>>>>
>>>>  DirectFBError [>surface->Lock( surface, (DFBSurfaceLockFlags)(DSLF_READ
>>>> | DSLF_WRITE), &data, &pitch )]: Resource is locked!
>>>>
>>>>
>>>>
>>>> --
>>>> Regards
>>>>
>>>> Ravi Swami
>>>> EnMedia Software Technologies
>>>> Ph +91-974-264-3747
>>>>
>>>> _______________________________________________
>>>> directfb-users mailing list
>>>> directfb-users@directfb.org
>>>> http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-users
>>>>
>>>>
>>>
>>>
>>> --
>>> Sriram Neelakandan
>>> Author - Embedded Linux System Design And Development (
>>> http://tinyurl.com/2doosu)
>>>
>>
>>
>>
>> --
>> Regards
>>
>> Ravi Swami
>> EnMedia Software Technologies
>> Ph +91-974-264-3747
>>
>
>
>
> --
> Regards
>
> Ravi Swami
> EnMedia Software Technologies
> Ph +91-974-264-3747
>



-- 
Regards

Ravi Swami
EnMedia Software Technologies
Ph +91-974-264-3747
_______________________________________________
directfb-users mailing list
directfb-users@directfb.org
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-users

Reply via email to