mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2024-11-14 21:37:52 -07:00
Joined work of nakee and mine, cleanup the logging code a bit.
This solves the random __Log symbol and crash problem on linux Please tell us if you find problems in the logging code git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2109 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
c43d8e9dcd
commit
77215fd27c
@ -196,14 +196,10 @@ inline u64 swap64(u64 data) {return(((u64)swap32(data) << 32) | swap32(data >> 3
|
||||
} // end of namespace Common
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Utility functions
|
||||
// ¯¯¯¯¯¯¯¯¯
|
||||
|
||||
|
||||
///////////////////////////
|
||||
// Message alerts
|
||||
// ¯¯¯¯¯¯¯¯¯
|
||||
enum MSG_TYPE
|
||||
{
|
||||
INFORMATION,
|
||||
@ -230,12 +226,7 @@ extern bool MsgAlert(const char* caption, bool yes_no, int Style, const char* fo
|
||||
|
||||
|
||||
|
||||
///////////////////////////
|
||||
// Logging
|
||||
// ¯¯¯¯¯¯¯¯¯
|
||||
|
||||
extern void __Log(int logNumber, const char* text, ...);
|
||||
extern void __Logv(int log, int v, const char *format, ...);
|
||||
|
||||
// dummy class
|
||||
class LogTypes
|
||||
@ -279,14 +270,25 @@ class LogTypes
|
||||
};
|
||||
};
|
||||
|
||||
#ifdef LOGGING
|
||||
extern void __Log(int logNumber, const char* text, ...);
|
||||
extern void __Logv(int log, int v, const char *format, ...);
|
||||
|
||||
void Host_UpdateLogDisplay();
|
||||
|
||||
// Logging macros. LOGGING is turned on from earlier in this file
|
||||
#ifdef LOGGING
|
||||
|
||||
#ifdef _WIN32
|
||||
#define LOG(t, ...) __Log(LogTypes::t, __VA_ARGS__);
|
||||
#define LOGV(t,v, ...) __Log(LogTypes::t + (v)*100, __VA_ARGS__);
|
||||
#define LOGP(t, ...) __Log(t, __VA_ARGS__);
|
||||
#define LOGVP(t,v, ...) __Log(t + (v)*100, __VA_ARGS__);
|
||||
#else
|
||||
#define LOG(t, ...) __Log(LogTypes::t, ##__VA_ARGS__);
|
||||
#define LOGV(t,v, ...) __Log(LogTypes::t + (v)*100, ##__VA_ARGS__);
|
||||
#define LOGP(t, ...) __Log(t, ##__VA_ARGS__);
|
||||
#define LOGVP(t,v, ...) __Log(t + (v)*100, ##__VA_ARGS__);
|
||||
#endif
|
||||
|
||||
#define _dbg_assert_(_t_, _a_) \
|
||||
if (!(_a_)){\
|
||||
@ -305,6 +307,8 @@ void Host_UpdateLogDisplay();
|
||||
|
||||
#define LOG(_t_, ...)
|
||||
#define LOGV(_t_,_v_, ...)
|
||||
#define LOGP(_t_, ...)
|
||||
#define LOGVP(_t_,_v_, ...)
|
||||
#define _dbg_clear_()
|
||||
#ifndef _dbg_assert_
|
||||
#define _dbg_assert_(_t_, _a_) ;
|
||||
@ -326,9 +330,7 @@ void Host_UpdateLogDisplay();
|
||||
#endif
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Compile time asserts
|
||||
// ¯¯¯¯¯¯¯¯¯
|
||||
namespace
|
||||
{
|
||||
|
||||
@ -344,7 +346,6 @@ namespace
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
//////////////////////////////////
|
||||
|
||||
|
||||
#endif // #ifndef _COMMON_H
|
||||
|
@ -106,19 +106,19 @@ void PrintCallstack()
|
||||
}
|
||||
}
|
||||
|
||||
void PrintCallstack(LogTypes::LOG_TYPE _Log)
|
||||
void PrintCallstack(LogTypes::LOG_TYPE type)
|
||||
{
|
||||
u32 addr = Memory::ReadUnchecked_U32(PowerPC::ppcState.gpr[1]); // SP
|
||||
|
||||
__Logv(_Log, 1, "\n == STACK TRACE - SP = %08x ==\n", PowerPC::ppcState.gpr[1]);
|
||||
LOGVP(type, 1, "\n == STACK TRACE - SP = %08x ==\n", PowerPC::ppcState.gpr[1]);
|
||||
|
||||
if (LR == 0) {
|
||||
__Logv(_Log, 1, " LR = 0 - this is bad\n");
|
||||
LOGVP(type, 1, " LR = 0 - this is bad\n");
|
||||
}
|
||||
int count = 1;
|
||||
if (g_symbolDB.GetDescription(PowerPC::ppcState.pc) != g_symbolDB.GetDescription(LR))
|
||||
{
|
||||
__Log(_Log, " * %s [ LR = %08x ]\n", g_symbolDB.GetDescription(LR), LR);
|
||||
LOGP(type, " * %s [ LR = %08x ]\n", g_symbolDB.GetDescription(LR), LR);
|
||||
count++;
|
||||
}
|
||||
|
||||
@ -129,14 +129,14 @@ void PrintCallstack(LogTypes::LOG_TYPE _Log)
|
||||
const char *str = g_symbolDB.GetDescription(func);
|
||||
if (!str || strlen(str) == 0 || !strcmp(str, "Invalid"))
|
||||
str = "(unknown)";
|
||||
__Logv(_Log, 3, " * %s [ addr = %08x ]\n", str, func);
|
||||
LOGVP(type, 3, " * %s [ addr = %08x ]\n", str, func);
|
||||
addr = Memory::ReadUnchecked_U32(addr);
|
||||
}
|
||||
}
|
||||
|
||||
void PrintDataBuffer(LogTypes::LOG_TYPE _Log, u8* _pData, size_t _Size, const char* _title)
|
||||
void PrintDataBuffer(LogTypes::LOG_TYPE type, u8* _pData, size_t _Size, const char* _title)
|
||||
{
|
||||
__Log(_Log, _title);
|
||||
LOGP(type, _title);
|
||||
for (u32 j=0; j<_Size;)
|
||||
{
|
||||
std::string Temp;
|
||||
@ -150,7 +150,7 @@ void PrintDataBuffer(LogTypes::LOG_TYPE _Log, u8* _pData, size_t _Size, const ch
|
||||
break;
|
||||
}
|
||||
|
||||
__Log(_Log, " Data: %s", Temp.c_str());
|
||||
LOGP(type, " Data: %s", Temp.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -138,12 +138,12 @@ protected:
|
||||
void DumpCommands(u32 _CommandAddress, size_t _NumberOfCommands = 8,
|
||||
int LogType = LogTypes::WII_IPC_HLE, int Verbosity = 0)
|
||||
{
|
||||
// Because I have to use __Logv here I add this #if
|
||||
// Because I have to use LOGV here I add this #if
|
||||
#if defined(_DEBUG) || defined(DEBUGFAST)
|
||||
__Logv(LogType, Verbosity, "CommandDump of %s", GetDeviceName().c_str());
|
||||
LOGVP(LogType, Verbosity, "CommandDump of %s", GetDeviceName().c_str());
|
||||
for (u32 i = 0; i < _NumberOfCommands; i++)
|
||||
{
|
||||
__Logv(LogType, Verbosity, " Command%02i: 0x%08x", i,
|
||||
LOGVP(LogType, Verbosity, " Command%02i: 0x%08x", i,
|
||||
Memory::Read_U32(_CommandAddress + i*4));
|
||||
}
|
||||
#endif
|
||||
|
@ -86,29 +86,23 @@ struct TRectangle
|
||||
};
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Logging
|
||||
// ¯¯¯¯¯¯¯¯¯¯
|
||||
void DebugLog(const char* _fmt, ...); // This one goes to the main program
|
||||
void __Log(const char *format, ...); // This one is for the local console
|
||||
void __Log(int type, const char *format, ...);
|
||||
void HandleGLError();
|
||||
|
||||
#define ERROR_LOG __Log
|
||||
|
||||
#if defined(_DEBUG) || defined(DEBUGFAST)
|
||||
// FIXME ugly hack for debug to build should use logmanager
|
||||
//#define INFO_LOG if( g_Config.iLog & CONF_LOG ) __Log
|
||||
//#define PRIM_LOG if( g_Config.iLog & CONF_PRIMLOG ) __Log
|
||||
#define INFO_LOG __Log
|
||||
#define PRIM_LOG __Log
|
||||
#define DEBUG_LOG __Log
|
||||
#ifdef _WIN32
|
||||
#define ERROR_LOG(...) LOG(VIDEO, __VA_ARGS__)
|
||||
#define INFO_LOG(...) LOG(VIDEO, __VA_ARGS__)
|
||||
#define PRIM_LOG(...) LOG(VIDEO, __VA_ARGS__)
|
||||
#define DEBUG_LOG(...) LOG(VIDEO, __VA_ARGS__)
|
||||
#else
|
||||
#define INFO_LOG(...)
|
||||
#define PRIM_LOG(...)
|
||||
#define DEBUG_LOG(...)
|
||||
#define ERROR_LOG(...) LOG(VIDEO, ##__VA_ARGS__)
|
||||
#define INFO_LOG(...) LOG(VIDEO, ##__VA_ARGS__)
|
||||
#define PRIM_LOG(...) LOG(VIDEO, ##__VA_ARGS__)
|
||||
#define DEBUG_LOG(...) LOG(VIDEO, ##__VA_ARGS__)
|
||||
#endif
|
||||
///////////////////////////////////
|
||||
|
||||
|
||||
#endif // _VIDEOCOMMON_H
|
||||
|
@ -16,9 +16,6 @@
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
|
||||
// =======================================================================================
|
||||
// Includes
|
||||
// ---------------
|
||||
#include "../Globals.h" // The precompiled header
|
||||
|
||||
#include "IniFile.h" // Common
|
||||
@ -29,20 +26,13 @@
|
||||
#include "PBView.h" // Debugger files
|
||||
#include "Debugger.h"
|
||||
#include "Logging.h" // Open and close console
|
||||
// ========================
|
||||
|
||||
|
||||
// =======================================================================================
|
||||
// Declarations and definitions
|
||||
// ---------------
|
||||
extern int gPreset;
|
||||
int A, B;
|
||||
// ========================
|
||||
|
||||
|
||||
// =======================================================================================
|
||||
// Event table and class
|
||||
// ---------------
|
||||
BEGIN_EVENT_TABLE(CDebugger,wxDialog)
|
||||
EVT_SHOW(CDebugger::OnShow)
|
||||
EVT_CLOSE(CDebugger::OnClose)
|
||||
@ -81,12 +71,9 @@ CDebugger::~CDebugger()
|
||||
this->Save(file);
|
||||
file.Save(DEBUGGER_CONFIG_FILE);
|
||||
}
|
||||
// =========================
|
||||
|
||||
|
||||
// ==========================================================================
|
||||
// System functions
|
||||
// --------------
|
||||
void CDebugger::OnShow(wxShowEvent& /*event*/)
|
||||
{
|
||||
// bring the console back to
|
||||
@ -130,12 +117,8 @@ void CDebugger::OnUpdate(wxCommandEvent& /*event*/)
|
||||
{
|
||||
this->NotifyUpdate();
|
||||
}
|
||||
// ===============
|
||||
|
||||
|
||||
// ==========================================================================
|
||||
// Save and load settings
|
||||
// --------------
|
||||
void CDebugger::Save(IniFile& _IniFile) const
|
||||
{
|
||||
// TODO1: make this work when we close the entire program to, currently on total close we get
|
||||
@ -182,7 +165,6 @@ void CDebugger::Load(IniFile& _IniFile)
|
||||
_IniFile.Get("VideoWindow", "LogLevel", &g_Config.iLog, 0);
|
||||
m_settings->Check(g_Config.iLog - 1, true);
|
||||
}
|
||||
// ===============
|
||||
|
||||
|
||||
void CDebugger::CreateGUIControls()
|
||||
@ -209,7 +191,6 @@ void CDebugger::CreateGUIControls()
|
||||
|
||||
|
||||
|
||||
// ===================================================================
|
||||
// Main Page
|
||||
|
||||
|
||||
@ -238,12 +219,8 @@ void CDebugger::CreateGUIControls()
|
||||
m_buttonSizer->Add(m_Am, 0, 0, 5);
|
||||
m_buttonSizer->Add(m_Bp, 0, 0, 5);
|
||||
m_buttonSizer->Add(m_Bm, 0, 0, 5);
|
||||
// ------------------------
|
||||
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
// m_PageMain: Options
|
||||
// -------------------------
|
||||
wxStaticBoxSizer * m_optionsSizer = new wxStaticBoxSizer(wxVERTICAL, m_PageMain, wxT("Options"));
|
||||
//m_Label[0] = new wxStaticBox(m_PageMain, IDG_LABEL1, wxT("Options"),
|
||||
// wxDefaultPosition, wxDefaultSize, 0);
|
||||
@ -259,12 +236,9 @@ void CDebugger::CreateGUIControls()
|
||||
|
||||
m_optionsSizer->Add(m_Check[0], 0, 0, 5);
|
||||
m_optionsSizer->Add(m_Check[2], 0, 0, 5);
|
||||
// ------------------------
|
||||
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
// m_PageMain: Log settings checkboxes
|
||||
// -------------------------
|
||||
wxStaticBoxSizer * m_logSizer = new wxStaticBoxSizer(wxVERTICAL, m_PageMain, wxT("Log setting"));
|
||||
m_settings = new wxCheckListBox(m_PageMain, ID_CHECKLIST1, wxDefaultPosition, wxDefaultSize,
|
||||
0, NULL, wxNO_BORDER);
|
||||
@ -397,7 +371,7 @@ void CDebugger::Ap(wxCommandEvent& event)
|
||||
{
|
||||
A += 50;
|
||||
//MessageBox(0, "", "", 0);
|
||||
__Log("%i", A);
|
||||
DEBUG_LOG("%i", A);
|
||||
}
|
||||
void CDebugger::Am(wxCommandEvent& event)
|
||||
{
|
||||
|
@ -17,12 +17,7 @@
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
// =======================================================================================
|
||||
// Includes
|
||||
// ---------------
|
||||
#include "../Globals.h" // This is the precompiled header and must be the first ...
|
||||
|
||||
#include <iostream>
|
||||
@ -40,16 +35,8 @@
|
||||
#include "ConsoleWindow.h" // Open and close console, clear console window
|
||||
#endif
|
||||
#include "../Debugger/Logging.h" // For global logging values
|
||||
// =======================
|
||||
|
||||
|
||||
// =======================================================================================
|
||||
// Declarations and definitions
|
||||
// ---------------
|
||||
|
||||
// -------------------------
|
||||
// Externals
|
||||
// -------------
|
||||
extern int nFiles;
|
||||
float ratioFactor; // a global to get the ratio factor from MixAdd
|
||||
int gPreset = 0;
|
||||
@ -62,26 +49,16 @@ extern bool gReset;
|
||||
bool gOnlyLooping = false;
|
||||
//extern int gleft, gright, gtop, gbottom; // from BPStructs.cpp
|
||||
|
||||
// -------------------------
|
||||
// Counters
|
||||
// -------------
|
||||
int j = 0;
|
||||
int k = 0;
|
||||
bool iupdonce = false;
|
||||
std::vector<u16> viupd(15); // the length of the update frequency bar
|
||||
|
||||
// -------------------------
|
||||
// Classes
|
||||
// -------------
|
||||
#if defined(HAVE_WX) && HAVE_WX
|
||||
extern CDebugger* m_frame;
|
||||
#endif
|
||||
// =======================
|
||||
|
||||
|
||||
// =======================================================================================
|
||||
// Write title
|
||||
// --------------
|
||||
std::string writeTitle(int a)
|
||||
{
|
||||
std::string b;
|
||||
@ -91,20 +68,13 @@ std::string writeTitle(int a)
|
||||
}
|
||||
return b;
|
||||
}
|
||||
// =======================================================================================
|
||||
|
||||
|
||||
|
||||
// =======================================================================================
|
||||
// Write main message (presets)
|
||||
// --------------
|
||||
std::string writeMessage(int a, int i)
|
||||
{
|
||||
char buf [1000] = "";
|
||||
std::string sbuf;
|
||||
// =======================================================================================
|
||||
// PRESETS
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
/*
|
||||
PRESET 0
|
||||
"lef rig top bot | xof yof\n";
|
||||
@ -122,27 +92,12 @@ std::string writeMessage(int a, int i)
|
||||
}
|
||||
|
||||
|
||||
// =======================================================================================
|
||||
|
||||
|
||||
|
||||
// Logging
|
||||
void Logging(int a)
|
||||
{
|
||||
|
||||
|
||||
// =======================================================================================
|
||||
// Update parameter values
|
||||
// --------------
|
||||
// AXPB base
|
||||
|
||||
|
||||
// ==============
|
||||
|
||||
|
||||
// =======================================================================================
|
||||
// Control how often the screen is updated, and then update the screen
|
||||
// --------------
|
||||
if(a == 0) j++;
|
||||
//if(l == pow((double)2,32)) l=0; // reset l
|
||||
//l++;
|
||||
@ -150,13 +105,10 @@ void Logging(int a)
|
||||
{
|
||||
|
||||
|
||||
// =======================================================================================
|
||||
// Write header
|
||||
// --------------
|
||||
char buffer [1000] = "";
|
||||
std::string sbuff;
|
||||
sbuff = writeTitle(gPreset);
|
||||
// ==============
|
||||
|
||||
|
||||
// hopefully this is false if we don't have a debugging window and so it doesn't cause a crash
|
||||
@ -172,7 +124,7 @@ void Logging(int a)
|
||||
sbuff = sbuff + "\n";
|
||||
|
||||
|
||||
// =======================================================================================
|
||||
|
||||
// Write global values
|
||||
// ---------------
|
||||
/*
|
||||
@ -250,7 +202,7 @@ void Logging(int a)
|
||||
Console::ClearScreen();
|
||||
#endif
|
||||
|
||||
__Log("%s", sbuff.c_str());
|
||||
LOG(VIDEO, "%s", sbuff.c_str());
|
||||
sbuff.clear(); strcpy(buffer, "");
|
||||
// ================
|
||||
|
||||
|
@ -562,12 +562,13 @@ bool OpenGL_MakeCurrent()
|
||||
glXMakeCurrent(GLWin.dpy, GLWin.win, GLWin.ctx);
|
||||
XGetGeometry(GLWin.dpy, GLWin.win, &winDummy, &GLWin.x, &GLWin.y,
|
||||
&GLWin.width, &GLWin.height, &borderDummy, &GLWin.depth);
|
||||
ERROR_LOG("GLWin Depth %d", GLWin.depth);
|
||||
if (glXIsDirect(GLWin.dpy, GLWin.ctx))
|
||||
ERROR_LOG("you have Direct Rendering!");
|
||||
else
|
||||
ERROR_LOG("no Direct Rendering possible!");
|
||||
|
||||
ERROR_LOG("GLWin Depth %d", GLWin.depth)
|
||||
if (glXIsDirect(GLWin.dpy, GLWin.ctx)) {
|
||||
ERROR_LOG("you have Direct Rendering!");
|
||||
} else {
|
||||
ERROR_LOG("no Direct Rendering possible!");
|
||||
}
|
||||
|
||||
// better for pad plugin key input (thc)
|
||||
XSelectInput(GLWin.dpy, GLWin.win, ExposureMask | KeyPressMask | ButtonPressMask | KeyReleaseMask | ButtonReleaseMask | StructureNotifyMask | EnterWindowMask | LeaveWindowMask |
|
||||
FocusChangeMask );
|
||||
|
@ -16,9 +16,6 @@
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Includes
|
||||
// ¯¯¯¯¯¯¯¯¯¯¯¯¯
|
||||
#if defined(HAVE_WX) && HAVE_WX
|
||||
#include <wx/wx.h>
|
||||
#include <wx/filepicker.h>
|
||||
@ -35,41 +32,26 @@
|
||||
#include "IniFile.h"
|
||||
#include "ConsoleWindow.h"
|
||||
#include <assert.h>
|
||||
/////////////////////////////////////
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Open and close the Windows console window
|
||||
// ¯¯¯¯¯¯¯¯¯¯¯¯¯
|
||||
#ifdef _WIN32
|
||||
|
||||
void OpenConsole()
|
||||
{
|
||||
Console::Open(100, 300, "OpenGL Plugin Output"); // give room for 300 rows
|
||||
Console::Print("OpenGL console opened\n");
|
||||
#ifdef _WIN32
|
||||
MoveWindow(Console::GetHwnd(), 0,400, 1280,550, true); // Move window. Todo: make this
|
||||
// adjustable from the debugging window
|
||||
#endif
|
||||
}
|
||||
|
||||
void CloseConsole()
|
||||
{
|
||||
Console::Close();
|
||||
}
|
||||
#else
|
||||
// Dummy functions for console open/close
|
||||
void OpenConsole()
|
||||
{
|
||||
}
|
||||
|
||||
void CloseConsole()
|
||||
{
|
||||
}
|
||||
#endif
|
||||
//////////////////////////////////
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Write logs
|
||||
// ¯¯¯¯¯¯¯¯¯¯¯¯¯
|
||||
|
||||
// The log file handle
|
||||
static FILE* pfLog = NULL;
|
||||
@ -77,6 +59,7 @@ static FILE* pfLog = NULL;
|
||||
// This is on by default, but can be controlled from the debugging window
|
||||
bool LocalLogFile = true;
|
||||
|
||||
#ifdef LOGGING
|
||||
void __Log(const char *fmt, ...)
|
||||
{
|
||||
char* Msg = (char*)alloca(strlen(fmt)+512);
|
||||
@ -96,12 +79,8 @@ void __Log(const char *fmt, ...)
|
||||
if (pfLog != NULL && LocalLogFile)
|
||||
fwrite(Msg, strlen(Msg), 1, pfLog);
|
||||
|
||||
#ifdef _WIN32
|
||||
// Write to the console screen, if one exists
|
||||
Console::Print(Msg);
|
||||
#else
|
||||
//printf("%s", Msg);
|
||||
#endif
|
||||
Console::Print(Msg);
|
||||
|
||||
}
|
||||
|
||||
void __Log(int type, const char *fmt, ...)
|
||||
@ -114,10 +93,7 @@ void __Log(int type, const char *fmt, ...)
|
||||
va_end( ap );
|
||||
|
||||
g_VideoInitialize.pLog(Msg, FALSE);
|
||||
|
||||
#ifdef _WIN32
|
||||
// Write to the console screen, if one exists
|
||||
Console::Print(Msg);
|
||||
#endif
|
||||
}
|
||||
//////////////////////////////////
|
||||
#endif
|
||||
|
||||
|
@ -19,27 +19,16 @@
|
||||
#define _GLOBALS_H
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Includes
|
||||
// -------------
|
||||
#include "Common.h"
|
||||
#include "Config.h"
|
||||
|
||||
#include "VideoCommon.h"
|
||||
#include "pluginspecs_video.h"
|
||||
//////////////////////////////
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Declarations and definitions
|
||||
// -------------
|
||||
|
||||
// Turns file logging on and off
|
||||
extern bool LocalLogFile;
|
||||
|
||||
// A global plugin specification
|
||||
extern PLUGIN_GLOBALS* globals;
|
||||
//////////////////////////////
|
||||
|
||||
|
||||
#endif // _GLOBALS_H
|
||||
|
@ -16,9 +16,6 @@
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Includes
|
||||
// -------------
|
||||
#include "Globals.h"
|
||||
#include <list>
|
||||
#include <vector>
|
||||
@ -59,12 +56,7 @@
|
||||
#include "Win32Window.h" // warning: crapcode
|
||||
#else
|
||||
#endif
|
||||
/////////////////////////////
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Declarations and definitions
|
||||
// -------------
|
||||
struct MESSAGE
|
||||
{
|
||||
MESSAGE() {}
|
||||
@ -139,9 +131,9 @@ bool Renderer::Init()
|
||||
const char* ptoken = (const char*)glGetString(GL_EXTENSIONS);
|
||||
if (ptoken == NULL) return false;
|
||||
|
||||
__Log("Supported OpenGL Extensions:\n");
|
||||
__Log(ptoken); // write to the log file
|
||||
__Log("\n");
|
||||
INFO_LOG("Supported OpenGL Extensions:\n");
|
||||
INFO_LOG(ptoken); // write to the log file
|
||||
INFO_LOG("\n");
|
||||
|
||||
if (strstr(ptoken, "GL_EXT_blend_logic_op") != NULL)
|
||||
g_bBlendLogicOp = true;
|
||||
@ -326,8 +318,8 @@ bool Renderer::Init()
|
||||
glGetProgramivARB(GL_FRAGMENT_PROGRAM_ARB, GL_MAX_PROGRAM_ENV_PARAMETERS_ARB, (GLint *)&nenvfragparams);
|
||||
glGetProgramivARB(GL_VERTEX_PROGRAM_ARB, GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB, (GLint *)&naddrregisters[0]);
|
||||
glGetProgramivARB(GL_FRAGMENT_PROGRAM_ARB, GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB, (GLint *)&naddrregisters[1]);
|
||||
__Log("max program env parameters: vert=%d, frag=%d\n", nenvvertparams, nenvfragparams);
|
||||
__Log("max program address register parameters: vert=%d, frag=%d\n", naddrregisters[0], naddrregisters[1]);
|
||||
DEBUG_LOG("max program env parameters: vert=%d, frag=%d\n", nenvvertparams, nenvfragparams);
|
||||
DEBUG_LOG("max program address register parameters: vert=%d, frag=%d\n", naddrregisters[0], naddrregisters[1]);
|
||||
|
||||
if (nenvvertparams < 238)
|
||||
ERROR_LOG("not enough vertex shader environment constants!!\n");
|
||||
@ -689,7 +681,7 @@ bool Renderer::SetScissorRect()
|
||||
rc_bottom *= MValueY;
|
||||
if (rc_bottom > 480 * MValueY) rc_bottom = 480 * MValueY;
|
||||
|
||||
/*__Log("Scissor: lt=(%d,%d), rb=(%d,%d,%i), off=(%d,%d)\n",
|
||||
/*LOG("Scissor: lt=(%d,%d), rb=(%d,%d,%i), off=(%d,%d)\n",
|
||||
rc_left, rc_top,
|
||||
rc_right, rc_bottom, Renderer::GetTargetHeight(),
|
||||
xoff, yoff
|
||||
|
Loading…
Reference in New Issue
Block a user