On Thu, Dec 30, 2004 at 12:04:23PM +0100, Diego 'Flameeyes' Pettenò wrote:
I had some spare time, and I wanted to do some mostly non-designing code, so I took the time to look at wine's janitorial projects, and I took a look at the DPRINTF -> TRACE conversion.
The attached patch removes DPRINTFs from x11drv/opengl.c (which is the only file in x11drv which uses them), and replacing the 6 different following calls with a single call for bits and buffer counters.
This is a good project to work on, but the reason it's not done yet it's because it is not a simple replacement of DPRINTF with TRACE. Doing stuff like: + TRACE(" - size / version : %d / %d\n", ppfd->nSize, ppfd->nVersion); + TRACE(" - dwFlags : ");
Will not work correctly in a multitreaded environment, where the lines may get intertwinded on output with statements from other threads.
The way to do it is to prepare the output in a memory buffer, and output it at once. This can be done with the wine_dbg_sprintf() function. In cases where you need logic to construct the output (like testing for flags, etc), you can do it by first printing to a local buffer, and then printing the content of the buffer to a debug buffer via wine_dbg_sprintf(). A simple example of this technique can be found in the dlls/kernel/locale.c file, in the debugstr_lang() function.
On Thu, Dec 30, 2004 at 11:10:19AM -0500, Dimitrie O. Paun wrote:
The way to do it is to prepare the output in a memory buffer, and output it at once. This can be done with the wine_dbg_sprintf() function. In cases where you need logic to construct the output (like testing for flags, etc), you can do it by first printing to a local buffer, and then printing the content of the buffer to a debug buffer via wine_dbg_sprintf(). A simple example of this technique can be found in the dlls/kernel/locale.c file, in the debugstr_lang() function.
Yeah, this is another janitorial task that could be put on the list: transform all 'TRACEing helper functions' (a lot in DDraw) to function returning strings to really only have TRACEs calls in 'real' functions and not logging functions.
Lionel