[interfacekit] Re: server part of BDirectWindow
- From: "Rudolf" <drivers.be-hold@xxxxxxxxxxxx>
- To: interfacekit@xxxxxxxxxxxxx
- Date: Fri, 09 Apr 2004 21:11:23 GMT
Hi Jack,
When you start on DirectWindow, you probably need to talk to the
app_server guys about cursor stuff at some point. DW said in a
newsletter on the obos site he is not planning to use hardcursors in
graphicscard anymore, because he wants 32bit color cursors.
With the current setup, this will also disable BWindowScreen windowed
mode use in all versions of beos, as hardcursor support is needed for
that: otherwise in an app's windowed DirectWindow this app would need
to think about the cursor, which currently, thanks to hardcursors is
not needed.
Rudolf.
> I'm going to spend a bit of time working on the server part of
> BDirectWindow. It needs very little code, though I'll have to change
some files on the app_server's side.
>
> I won't do that till tuesday, at least, but I thought it would be
> good to write here what I was going to do.
>
> Basically, for now, I'll just add this function to ServerWindow.cpp
>
> const uint64 kDirectWindowTimeout = 3000000;
>
> /*! \brief Does the work needed to call
> BDirectWindow::DirectConnected()
> Called when the Window clipping region changes.
> */
> status_t
> ServerWindow::HandleDirectWindow(direct_buffer_state state)
> {
> // TODO: Implement correctly
> fDirectBufferInfo->buffer_state = state;
> fDirectBufferInfo->bits = NULL; // Should be a pointer to the frame
> buffer
> fDirectBufferInfo->pci_bits = NULL; // Should be a pointer to the
> pci space
> fDirectBufferInfo->bytes_per_row = 0;
> fDirectBufferInfo->bits_per_pixel = 0;
> fDirectBufferInfo->pixel_format = B_NO_COLOR_SPACE;
> fDirectBufferInfo->layout = B_BUFFER_NONINTERLEAVED;
> fDirectBufferInfo->orientation = B_BUFFER_TOP_TO_BOTTOM;
>
> // Should be the number of rects in the clipping region
> fDirectBufferInfo->clip_list_count = 0;
> fDirectBufferInfo->window_bounds = to_clipping_rect(fFrame);
> fDirectBufferInfo->clip_bounds = (clipping_rect){ 0, 0, -1, -1 }; /
> /TODO: fix this
>
> for (uint32 i = 0; i < fDirectBufferInfo->clip_list_count; i++) {
> // TODO: Should get the real clipping region
> fDirectBufferInfo->clip_list[i] = (clipping_rect){ 0, 0, -1, -1
> };
> }
>
> // Releasing this let the BDirectWindow::DirectConnected()
> // method do its work
> release_sem(fDisableSem);
>
> // TODO: We block here for 'kDirectWindowTimeout' microseconds.
> // If the app still does not release this sem, we should kill it.
> status_t status;
> do {
> status = acquire_sem_etc(fDisableAckSem, 1, B_RELATIVE_TIMEOUT,
> kDirectWindowTimeout);
> } while (status == B_INTERRUPTED);
>
> return status;
> }
>
>
>
> And the following three members to ServerWindow.h:
>
> private:
>
> direct_buffer_info *fDirectBufferInfo;
> sem_id fDisableSem;
> sem_id fDisableAckSem;
>
> As you can see, nothing extraordinary, but then I'll need some way to
> get the info to fill the direct_buffer_struct, at least a pointer to
the frame buffer (which will be a pointer to a BBitmap Bits() in case
we're drawing on a "fake" surface, as we are now), for now.
>
> As BDirectWindow needs very little help from the app_server , I think
> we can implement it in short time, and I hope we can show something
very soon :)
>
> BTW, that change I'm going to do won't break or interfere with
> anything in the current
> Opinions ?
> Adi, still around ? I know you're slaving away at writing BView, but
> I won't bother you much :)
>
>
> P.S: What's the point of committing this non working WIP ? Well, I'm
> sure that if it's there, I'll force myself to finish it :)
>
>
>
>
>
- Follow-Ups:
- [interfacekit] Re: server part of BDirectWindow
- From: Rudolf
- References:
- [interfacekit] server part of BDirectWindow
- From: burton666@xxxxxxxxx
Other related posts:
- » [interfacekit] server part of BDirectWindow
- » [interfacekit] Re: server part of BDirectWindow
- » [interfacekit] Re: server part of BDirectWindow
- » [interfacekit] Re: server part of BDirectWindow
- » [interfacekit] Re: server part of BDirectWindow
- » [interfacekit] Re: server part of BDirectWindow
- » [interfacekit] Re: server part of BDirectWindow
- » [interfacekit] Re: server part of BDirectWindow
- » [interfacekit] Re: server part of BDirectWindow
- » [interfacekit] Re: server part of BDirectWindow
- » [interfacekit] Re: server part of BDirectWindow
- » [interfacekit] Re: server part of BDirectWindow
- » [interfacekit] Re: server part of BDirectWindow
- » [interfacekit] Re: server part of BDirectWindow
- » [interfacekit] Re: server part of BDirectWindow
- » [interfacekit] Re: server part of BDirectWindow
- » [interfacekit] Re: server part of BDirectWindow
- » [interfacekit] Re: server part of BDirectWindow
- [interfacekit] Re: server part of BDirectWindow
- From: Rudolf
- [interfacekit] server part of BDirectWindow
- From: burton666@xxxxxxxxx