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
|
||||
])
|
||||
|
||||
#AC_CHECK_LIB(SDL_image, IMG_Load,
|
||||
# LIBS="$LIBS -lSDL_image",
|
||||
# AC_MSG_ERROR([*** SDL_image library not found!]))
|
||||
|
||||
AC_LANG_PUSH([C++])
|
||||
NP_FINDLIB([XERCES], [xerces], [xerces],
|
||||
NP_LANG_PROGRAM([#include <xercesc/util/PlatformUtils.hpp>
|
||||
|
@@ -1098,7 +1098,7 @@ void MenuStateCustomGame::simpleTask() {
|
||||
// uncomment to enable router setup check of this server
|
||||
if(EndsWith(serverInfo, "OK") == false) {
|
||||
showMasterserverError=true;
|
||||
masterServererErrorToShow=serverInfo;
|
||||
masterServererErrorToShow = (serverInfo != "" ? serverInfo : "No Reply");
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -382,22 +382,32 @@ void MenuStateMasterserver::simpleTask() {
|
||||
return;
|
||||
}
|
||||
MutexSafeWrapper safeMutex(&masterServerThreadAccessor);
|
||||
if(needUpdateFromServer == true) {
|
||||
bool needUpdate = needUpdateFromServer;
|
||||
safeMutex.ReleaseLock();
|
||||
|
||||
if(needUpdate == true) {
|
||||
updateServerInfo();
|
||||
}
|
||||
}
|
||||
|
||||
void MenuStateMasterserver::updateServerInfo() {
|
||||
try {
|
||||
needUpdateFromServer = false;
|
||||
|
||||
if( updateFromMasterserverThread == NULL ||
|
||||
updateFromMasterserverThread->getQuitStatus() == true) {
|
||||
return;
|
||||
}
|
||||
|
||||
MutexSafeWrapper safeMutex(&masterServerThreadAccessor);
|
||||
needUpdateFromServer = false;
|
||||
int numberOfOldServerLines=serverLines.size();
|
||||
clearServerLines();
|
||||
|
||||
safeMutex.ReleaseLock(true);
|
||||
|
||||
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");
|
||||
|
||||
if(serverInfo != "") {
|
||||
std::vector<std::string> serverList;
|
||||
Tokenize(serverInfo,serverList,"\n");
|
||||
for(int i=0; i < serverList.size(); i++) {
|
||||
@@ -407,6 +417,14 @@ void MenuStateMasterserver::updateServerInfo() {
|
||||
|
||||
const int MIN_FIELDS_EXPECTED = 11;
|
||||
if(serverEntities.size() >= MIN_FIELDS_EXPECTED) {
|
||||
|
||||
Lang &lang= Lang::getInstance();
|
||||
labelTitle.setText(lang.get("AvailableServers"));
|
||||
|
||||
if(Config::getInstance().getString("Masterserver","") == "") {
|
||||
labelTitle.setText("*** " + lang.get("AvailableServers"));
|
||||
}
|
||||
|
||||
MasterServerInfo *masterServerInfo=new MasterServerInfo();
|
||||
|
||||
//general info:
|
||||
@@ -433,15 +451,33 @@ void MenuStateMasterserver::updateServerInfo() {
|
||||
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(serverLines.size()>numberOfOldServerLines)
|
||||
{
|
||||
if( updateFromMasterserverThread == NULL ||
|
||||
updateFromMasterserverThread->getQuitStatus() == true) {
|
||||
return;
|
||||
}
|
||||
|
||||
safeMutex.Lock();
|
||||
if(serverLines.size()>numberOfOldServerLines) {
|
||||
playServerFoundSound=true;
|
||||
}
|
||||
safeMutex.ReleaseLock(true);
|
||||
}
|
||||
catch(const exception &e){
|
||||
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 "window.h"
|
||||
#include <vector>
|
||||
//#include <SDL_image.h>
|
||||
#include "leak_dumper.h"
|
||||
|
||||
using namespace Shared::Graphics::Gl;
|
||||
@@ -54,6 +55,31 @@ void PlatformContextGl::init(int colorBits, int depthBits, int stencilBits) {
|
||||
int resW = PlatformCommon::Private::ScreenWidth;
|
||||
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);
|
||||
|
||||
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);
|
||||
|
||||
//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__);
|
||||
|
||||
char errbuf[CURL_ERROR_SIZE]="";
|
||||
curl_easy_setopt(handle, CURLOPT_ERRORBUFFER, errbuf);
|
||||
|
||||
/* get contents from the URL */
|
||||
curl_easy_perform(handle);
|
||||
|
||||
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||
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);
|
||||
|
||||
std::string serverResponse = (chunk.memory != NULL ? chunk.memory : "");
|
||||
if(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());
|
||||
|
||||
|
Reference in New Issue
Block a user