mirror of
https://github.com/glest/glest-source.git
synced 2025-08-19 06:31:19 +02:00
- fixed masterserver invalid connection issue and blank error message in custom game menu
- added optional bmp icon load for linux
This commit is contained in:
@@ -93,6 +93,10 @@ else
|
|||||||
fi
|
fi
|
||||||
])
|
])
|
||||||
|
|
||||||
|
#AC_CHECK_LIB(SDL_image, IMG_Load,
|
||||||
|
# LIBS="$LIBS -lSDL_image",
|
||||||
|
# AC_MSG_ERROR([*** SDL_image library not found!]))
|
||||||
|
|
||||||
AC_LANG_PUSH([C++])
|
AC_LANG_PUSH([C++])
|
||||||
NP_FINDLIB([XERCES], [xerces], [xerces],
|
NP_FINDLIB([XERCES], [xerces], [xerces],
|
||||||
NP_LANG_PROGRAM([#include <xercesc/util/PlatformUtils.hpp>
|
NP_LANG_PROGRAM([#include <xercesc/util/PlatformUtils.hpp>
|
||||||
|
@@ -1098,7 +1098,7 @@ void MenuStateCustomGame::simpleTask() {
|
|||||||
// uncomment to enable router setup check of this server
|
// uncomment to enable router setup check of this server
|
||||||
if(EndsWith(serverInfo, "OK") == false) {
|
if(EndsWith(serverInfo, "OK") == false) {
|
||||||
showMasterserverError=true;
|
showMasterserverError=true;
|
||||||
masterServererErrorToShow=serverInfo;
|
masterServererErrorToShow = (serverInfo != "" ? serverInfo : "No Reply");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -382,66 +382,102 @@ void MenuStateMasterserver::simpleTask() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
MutexSafeWrapper safeMutex(&masterServerThreadAccessor);
|
MutexSafeWrapper safeMutex(&masterServerThreadAccessor);
|
||||||
if(needUpdateFromServer == true) {
|
bool needUpdate = needUpdateFromServer;
|
||||||
|
safeMutex.ReleaseLock();
|
||||||
|
|
||||||
|
if(needUpdate == true) {
|
||||||
updateServerInfo();
|
updateServerInfo();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MenuStateMasterserver::updateServerInfo() {
|
void MenuStateMasterserver::updateServerInfo() {
|
||||||
try {
|
try {
|
||||||
needUpdateFromServer = false;
|
|
||||||
|
|
||||||
|
if( updateFromMasterserverThread == NULL ||
|
||||||
|
updateFromMasterserverThread->getQuitStatus() == true) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
MutexSafeWrapper safeMutex(&masterServerThreadAccessor);
|
||||||
|
needUpdateFromServer = false;
|
||||||
int numberOfOldServerLines=serverLines.size();
|
int numberOfOldServerLines=serverLines.size();
|
||||||
clearServerLines();
|
clearServerLines();
|
||||||
|
safeMutex.ReleaseLock(true);
|
||||||
|
|
||||||
if(Config::getInstance().getString("Masterserver","") != "") {
|
if(Config::getInstance().getString("Masterserver","") != "") {
|
||||||
std::string serverInfo = SystemFlags::getHTTP(Config::getInstance().getString("Masterserver")+"showServersForGlest.php");
|
std::string serverInfo = SystemFlags::getHTTP(Config::getInstance().getString("Masterserver") + "showServersForGlest.php");
|
||||||
|
|
||||||
std::vector<std::string> serverList;
|
if(serverInfo != "") {
|
||||||
Tokenize(serverInfo,serverList,"\n");
|
std::vector<std::string> serverList;
|
||||||
for(int i=0; i < serverList.size(); i++) {
|
Tokenize(serverInfo,serverList,"\n");
|
||||||
string &server = serverList[i];
|
for(int i=0; i < serverList.size(); i++) {
|
||||||
std::vector<std::string> serverEntities;
|
string &server = serverList[i];
|
||||||
Tokenize(server,serverEntities,"|");
|
std::vector<std::string> serverEntities;
|
||||||
|
Tokenize(server,serverEntities,"|");
|
||||||
|
|
||||||
const int MIN_FIELDS_EXPECTED = 11;
|
const int MIN_FIELDS_EXPECTED = 11;
|
||||||
if(serverEntities.size() >= MIN_FIELDS_EXPECTED) {
|
if(serverEntities.size() >= MIN_FIELDS_EXPECTED) {
|
||||||
MasterServerInfo *masterServerInfo=new MasterServerInfo();
|
|
||||||
|
|
||||||
//general info:
|
Lang &lang= Lang::getInstance();
|
||||||
masterServerInfo->setGlestVersion(serverEntities[0]);
|
labelTitle.setText(lang.get("AvailableServers"));
|
||||||
masterServerInfo->setPlatform(serverEntities[1]);
|
|
||||||
masterServerInfo->setBinaryCompileDate(serverEntities[2]);
|
|
||||||
|
|
||||||
//game info:
|
if(Config::getInstance().getString("Masterserver","") == "") {
|
||||||
masterServerInfo->setServerTitle(serverEntities[3]);
|
labelTitle.setText("*** " + lang.get("AvailableServers"));
|
||||||
masterServerInfo->setIpAddress(serverEntities[4]);
|
}
|
||||||
|
|
||||||
//game setup info:
|
MasterServerInfo *masterServerInfo=new MasterServerInfo();
|
||||||
masterServerInfo->setTech(serverEntities[5]);
|
|
||||||
masterServerInfo->setMap(serverEntities[6]);
|
|
||||||
masterServerInfo->setTileset(serverEntities[7]);
|
|
||||||
masterServerInfo->setActiveSlots(strToInt(serverEntities[8]));
|
|
||||||
masterServerInfo->setNetworkSlots(strToInt(serverEntities[9]));
|
|
||||||
masterServerInfo->setConnectedClients(strToInt(serverEntities[10]));
|
|
||||||
|
|
||||||
//printf("Getting Ping time for host %s\n",masterServerInfo->getIpAddress().c_str());
|
//general info:
|
||||||
float pingTime = Socket::getAveragePingMS(masterServerInfo->getIpAddress().c_str(),1);
|
masterServerInfo->setGlestVersion(serverEntities[0]);
|
||||||
//printf("Ping time = %f\n",pingTime);
|
masterServerInfo->setPlatform(serverEntities[1]);
|
||||||
char szBuf[1024]="";
|
masterServerInfo->setBinaryCompileDate(serverEntities[2]);
|
||||||
sprintf(szBuf,"%s, %.2fms",masterServerInfo->getServerTitle().c_str(),pingTime);
|
|
||||||
masterServerInfo->setServerTitle(szBuf);
|
|
||||||
|
|
||||||
serverLines.push_back(new ServerLine( masterServerInfo, i));
|
//game info:
|
||||||
|
masterServerInfo->setServerTitle(serverEntities[3]);
|
||||||
|
masterServerInfo->setIpAddress(serverEntities[4]);
|
||||||
|
|
||||||
|
//game setup info:
|
||||||
|
masterServerInfo->setTech(serverEntities[5]);
|
||||||
|
masterServerInfo->setMap(serverEntities[6]);
|
||||||
|
masterServerInfo->setTileset(serverEntities[7]);
|
||||||
|
masterServerInfo->setActiveSlots(strToInt(serverEntities[8]));
|
||||||
|
masterServerInfo->setNetworkSlots(strToInt(serverEntities[9]));
|
||||||
|
masterServerInfo->setConnectedClients(strToInt(serverEntities[10]));
|
||||||
|
|
||||||
|
//printf("Getting Ping time for host %s\n",masterServerInfo->getIpAddress().c_str());
|
||||||
|
float pingTime = Socket::getAveragePingMS(masterServerInfo->getIpAddress().c_str(),1);
|
||||||
|
//printf("Ping time = %f\n",pingTime);
|
||||||
|
char szBuf[1024]="";
|
||||||
|
sprintf(szBuf,"%s, %.2fms",masterServerInfo->getServerTitle().c_str(),pingTime);
|
||||||
|
masterServerInfo->setServerTitle(szBuf);
|
||||||
|
|
||||||
|
if( updateFromMasterserverThread == NULL ||
|
||||||
|
updateFromMasterserverThread->getQuitStatus() == true) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
safeMutex.Lock();
|
||||||
|
serverLines.push_back(new ServerLine( masterServerInfo, i));
|
||||||
|
safeMutex.ReleaseLock(true);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Lang &lang= Lang::getInstance();
|
||||||
|
labelTitle.setText("*** " + lang.get("AvailableServers") + " [" + serverInfo + "]");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( updateFromMasterserverThread == NULL ||
|
||||||
|
updateFromMasterserverThread->getQuitStatus() == true) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if(serverLines.size()>numberOfOldServerLines)
|
safeMutex.Lock();
|
||||||
{
|
if(serverLines.size()>numberOfOldServerLines) {
|
||||||
playServerFoundSound=true;
|
playServerFoundSound=true;
|
||||||
}
|
}
|
||||||
|
safeMutex.ReleaseLock(true);
|
||||||
}
|
}
|
||||||
catch(const exception &e){
|
catch(const exception &e){
|
||||||
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s] Line: %d, error [%s]\n",__FILE__,__FUNCTION__,__LINE__,e.what());
|
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s] Line: %d, error [%s]\n",__FILE__,__FUNCTION__,__LINE__,e.what());
|
||||||
|
@@ -23,6 +23,7 @@
|
|||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "window.h"
|
#include "window.h"
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
//#include <SDL_image.h>
|
||||||
#include "leak_dumper.h"
|
#include "leak_dumper.h"
|
||||||
|
|
||||||
using namespace Shared::Graphics::Gl;
|
using namespace Shared::Graphics::Gl;
|
||||||
@@ -54,6 +55,31 @@ void PlatformContextGl::init(int colorBits, int depthBits, int stencilBits) {
|
|||||||
int resW = PlatformCommon::Private::ScreenWidth;
|
int resW = PlatformCommon::Private::ScreenWidth;
|
||||||
int resH = PlatformCommon::Private::ScreenHeight;
|
int resH = PlatformCommon::Private::ScreenHeight;
|
||||||
|
|
||||||
|
#ifndef WIN32
|
||||||
|
if(fileExists("megaglest.bmp")) {
|
||||||
|
SDL_Surface *icon = SDL_LoadBMP("megaglest.bmp");
|
||||||
|
//SDL_Surface *icon = IMG_Load("megaglest.ico");
|
||||||
|
|
||||||
|
|
||||||
|
//#if !defined(MACOSX)
|
||||||
|
// Set Icon (must be done before any sdl_setvideomode call)
|
||||||
|
// But don't set it on OS X, as we use a nicer external icon there.
|
||||||
|
//#if WORDS_BIGENDIAN
|
||||||
|
// SDL_Surface* icon= SDL_CreateRGBSurfaceFrom((void*)logo,32,32,8,128,0xff000000,0x00ff0000,0x0000ff00,0);
|
||||||
|
//#else
|
||||||
|
// SDL_Surface* icon= SDL_CreateRGBSurfaceFrom((void*)logo,32,32,32,128,0x000000ff,0x0000ff00,0x00ff0000,0xff000000);
|
||||||
|
//#endif
|
||||||
|
|
||||||
|
printf("In [%s::%s Line: %d] icon = %p\n",__FILE__,__FUNCTION__,__LINE__,icon);
|
||||||
|
if(icon == NULL) {
|
||||||
|
printf("Error: %s\n", SDL_GetError());
|
||||||
|
}
|
||||||
|
if(icon != NULL) {
|
||||||
|
SDL_WM_SetIcon(icon, NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] about to set resolution: %d x %d, colorBits = %d.\n",__FILE__,__FUNCTION__,__LINE__,resW,resH,colorBits);
|
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] about to set resolution: %d x %d, colorBits = %d.\n",__FILE__,__FUNCTION__,__LINE__,resW,resH,colorBits);
|
||||||
|
|
||||||
SDL_Surface* screen = SDL_SetVideoMode(resW, resH, colorBits, flags);
|
SDL_Surface* screen = SDL_SetVideoMode(resW, resH, colorBits, flags);
|
||||||
|
@@ -108,19 +108,26 @@ std::string SystemFlags::getHTTP(std::string URL,CURL *handle) {
|
|||||||
|
|
||||||
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line %d] handle = %p\n",__FILE__,__FUNCTION__,__LINE__,handle);
|
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line %d] handle = %p\n",__FILE__,__FUNCTION__,__LINE__,handle);
|
||||||
|
|
||||||
//curl_easy_setopt(handle, CURLOPT_VERBOSE, 1);
|
if(getSystemSettingType(SystemFlags::debugNetwork).enabled == true) {
|
||||||
|
curl_easy_setopt(handle, CURLOPT_VERBOSE, 1);
|
||||||
|
}
|
||||||
|
|
||||||
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||||
|
|
||||||
|
char errbuf[CURL_ERROR_SIZE]="";
|
||||||
|
curl_easy_setopt(handle, CURLOPT_ERRORBUFFER, errbuf);
|
||||||
|
|
||||||
/* get contents from the URL */
|
/* get contents from the URL */
|
||||||
curl_easy_perform(handle);
|
CURLcode result = curl_easy_perform(handle);
|
||||||
|
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line %d] return code [%d] [%s]\n",__FILE__,__FUNCTION__,__LINE__,result,errbuf);
|
||||||
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
|
||||||
|
|
||||||
std::string serverResponse = (chunk.memory != NULL ? chunk.memory : "");
|
std::string serverResponse = (chunk.memory != NULL ? chunk.memory : "");
|
||||||
if(chunk.memory) {
|
if(chunk.memory) {
|
||||||
free(chunk.memory);
|
free(chunk.memory);
|
||||||
}
|
}
|
||||||
|
if(result != CURLE_OK) {
|
||||||
|
serverResponse = errbuf;
|
||||||
|
}
|
||||||
|
|
||||||
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line %d] serverResponse [%s]\n",__FILE__,__FUNCTION__,__LINE__,serverResponse.c_str());
|
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line %d] serverResponse [%s]\n",__FILE__,__FUNCTION__,__LINE__,serverResponse.c_str());
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user