From a102be7b8c5c88745fdb34fd9e5fd61ebfc24213 Mon Sep 17 00:00:00 2001 From: lotodore Date: Sat, 21 Mar 2009 19:56:53 +0000 Subject: [PATCH] Close file stream before upload. Hard code jpg http avatars (temporary). Still broken. --- src/core/common/avatarmanager.cpp | 1 + src/net/common/clientthread.cpp | 23 +++++++++-------------- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/src/core/common/avatarmanager.cpp b/src/core/common/avatarmanager.cpp index 369c1bad..03640a5d 100644 --- a/src/core/common/avatarmanager.cpp +++ b/src/core/common/avatarmanager.cpp @@ -364,6 +364,7 @@ AvatarManager::StoreAvatarInCache(const MD5Buf &md5buf, AvatarFileType avatarFil if (!o.fail()) { o.write((const char *)data, size); + o.close(); if (upload && m_useExternalServer) { m_uploader->QueueUpload(m_externalServerAddress, m_externalServerUser, m_externalServerPassword, fileName, size); diff --git a/src/net/common/clientthread.cpp b/src/net/common/clientthread.cpp index 6f4ff8a4..ad989c18 100644 --- a/src/net/common/clientthread.cpp +++ b/src/net/common/clientthread.cpp @@ -356,11 +356,8 @@ ClientThread::Main() { // Start sub-threads. m_senderThread->Start(); - if (!GetContext().GetAvatarServerAddr().empty()) - { - m_avatarDownloader.reset(new DownloaderThread); - m_avatarDownloader->Run(); - } + m_avatarDownloader.reset(new DownloaderThread); + m_avatarDownloader->Run(); SetState(CLIENT_INITIAL_STATE::Instance()); // Main loop. @@ -400,12 +397,8 @@ ClientThread::Main() GetCallback().SignalNetClientError(e.GetErrorId(), e.GetOsErrorCode()); } // Terminate sub-threads. - if (m_avatarDownloader) - { - m_avatarDownloader->SignalTermination(); - m_avatarDownloader->Join(DOWNLOADER_THREAD_TERMINATE_TIMEOUT); - m_avatarDownloader.reset(); - } + m_avatarDownloader->SignalTermination(); + m_avatarDownloader->Join(DOWNLOADER_THREAD_TERMINATE_TIMEOUT); m_senderThread->SignalStop(); m_senderThread->WaitStop(); } @@ -564,8 +557,9 @@ ClientThread::RetrieveAvatarIfNeeded(unsigned id, const PlayerInfo &info) string avatarServerAddress(GetContext().GetAvatarServerAddr()); if (!avatarServerAddress.empty() && m_avatarDownloader) { - string filename(TEMP_AVATAR_FILENAME); - m_avatarDownloader->QueueDownload(id, avatarServerAddress + filename, GetContext().GetCacheDir() + filename); + string serverFileName(info.avatar.ToString() + ".jpg"); // TODO! + m_avatarDownloader->QueueDownload( + id, avatarServerAddress + serverFileName, GetContext().GetCacheDir() + TEMP_AVATAR_FILENAME); } else { @@ -627,7 +621,7 @@ ClientThread::PassAvatarDataToManager(unsigned playerId, boost::shared_ptrfileType == AVATAR_FILE_TYPE_UNKNOWN) - avatarData->fileType = AVATAR_FILE_TYPE_PNG; // TODO! + avatarData->fileType = AVATAR_FILE_TYPE_JPG; // TODO! if (!GetAvatarManager().StoreAvatarInCache(tmpPlayerInfo.avatar, avatarData->fileType, &avatarData->fileData[0], avatarData->reportedSize, false)) LOG_ERROR("Failed to store avatar in cache directory."); @@ -655,6 +649,7 @@ ClientThread::CheckAvatarDownloads() { if (m_avatarDownloader && m_avatarDownloader->HasDownloadResult()) { + LOG_MSG("Avatar Download done."); unsigned playerId; boost::shared_ptr tmpAvatar(new AvatarData); m_avatarDownloader->GetDownloadResult(playerId, tmpAvatar->fileData);