[haiku-appserver] Re: 2D engine

  • From: Gabe Yoder <gyoder@xxxxxxxxxxx>
  • To: haiku-appserver@xxxxxxxxxxxxx
  • Date: Wed, 27 Oct 2004 18:17:08 -0400

On Wednesday 27 October 2004 07:13 am, Stefano Ceccherini wrote:
> I'm not Rudolf but I hope you'll pardon me if I reply :)
>
> > What is/means engine synchronization?
>
> My take is that it's a means to lock the driver/hardware, to be able to
> serialize the access to it. It's like any other form of locking, just that
> it's the driver/accelerant which implements it. That way you don't have to
> implement your own locking in the displaydriver class, you just call
> acquire_engine_global() before calling any accelerant function, then
> release_engine_global() when you're finished.

Acquiring the engine is essentially just a lock, but it is a lock that is 
relevant to more than just a single process.  Whenever you need to use the 2d 
acceleration functions (possible some others, I forget), you must acquire the 
engine, execute the function, and then release the engine.  Only one thread 
in the entire system can have access to the engine, so it is very important 
that you release the engine promptly.  While experimenting, I have messed 
with an application that acquired the engine, and then basicly just never 
released it.  That is a very effective way to hang the app_server.

Other related posts: