From 28fa064595b1b5cde9867af1225171c9c90760de Mon Sep 17 00:00:00 2001 From: Stefano Ceccherini Date: Fri, 25 Jan 2008 11:54:35 +0000 Subject: [PATCH] Added more conditional debug output, taken from the dw_info test app. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23730 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/game/DirectWindow.cpp | 71 ++++++++++++++++++++++++++++++++-- 1 file changed, 67 insertions(+), 4 deletions(-) diff --git a/src/kits/game/DirectWindow.cpp b/src/kits/game/DirectWindow.cpp index bdfae45ea0..7f2e81808f 100644 --- a/src/kits/game/DirectWindow.cpp +++ b/src/kits/game/DirectWindow.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2003-2007, Haiku Inc. + * Copyright 2003-2008, Haiku Inc. * Authors: * Stefano Ceccherini * Carwyn Jones @@ -15,7 +15,7 @@ #include #include -//#define DEBUG 1 +//#define DEBUG 3 #if DEBUG #include @@ -75,15 +75,78 @@ print_direct_driver_state(const direct_driver_state &state) } +static void +print_direct_buffer_layout(const buffer_layout &layout) +{ + char string[64]; + if (layout == B_BUFFER_NONINTERLEAVED) + strcpy(string, "B_BUFFER_NONINTERLEAVED"); + else + strcpy(string, "unknown"); + + printf("layout: %s\n", string); +} + + +static void +print_direct_buffer_orientation(const buffer_orientation &orientation) +{ + char string[64]; + switch (orientation) { + case B_BUFFER_TOP_TO_BOTTOM: + strcpy(string, "B_BUFFER_TOP_TO_BOTTOM"); + break; + case B_BUFFER_BOTTOM_TO_TOP: + strcpy(string, "B_BUFFER_BOTTOM_TO_TOP"); + break; + default: + strcpy(string, "unknown"); + break; + } + + printf("orientation: %s\n", string); +} + + static void print_direct_buffer_info(const direct_buffer_info &info) { print_direct_buffer_state(info.buffer_state); print_direct_driver_state(info.driver_state); + +#if DEBUG > 1 + printf("bits: %p\n", info.bits); + printf("pci_bits: %p\n", info.pci_bits); + printf("bytes_per_row: %ld\n", info.bytes_per_row); + printf("bits_per_pixel: %lu\n", info.bits_per_pixel); + printf("pixel_format: %d\n", info.pixel_format); + print_direct_buffer_layout(info.layout); + print_direct_buffer_orientation(info.orientation); + +#if DEBUG > 2 + printf("CLIPPING INFO:\n"); + printf("clipping_rects count: %ld\n", info.clip_list_count); + + printf("- window_bounds:\n"); + BRegion region; + region.Set(info.window_bounds); + region.PrintToStream(); + + region.MakeEmpty(); + for (uint32 i = 0; i < info.clip_list_count; i++) + region.Include(info.clip_list[i]); + + printf("- clip_list:\n"); + region.PrintToStream(); +#endif +#endif + + printf("\n\n"); } #endif + BDirectWindow::BDirectWindow(BRect frame, const char *title, window_type type, uint32 flags, uint32 workspace) : BWindow(frame, title, type, flags, workspace) @@ -494,7 +557,7 @@ BDirectWindow::_InitData() fDirectLockCount = 0; fDirectLockOwner = -1; fDirectLockStack = NULL; - fDirectSem = create_sem(1, "direct sem"); + fDirectSem = create_sem(0, "direct sem"); if (fDirectSem > 0) fInitStatus |= DW_STATUS_SEM_CREATED; #endif @@ -503,7 +566,7 @@ BDirectWindow::_InitData() fDisableSem = syncData.disable_sem; fDisableSemAck = syncData.disable_sem_ack; - fClonedClippingArea = clone_area("Clone direct area", (void**)&fBufferDesc, + fClonedClippingArea = clone_area("cloned direct area", (void**)&fBufferDesc, B_ANY_ADDRESS, B_READ_AREA, fSourceClippingArea); if (fClonedClippingArea > 0) {