mirror of
https://github.com/SFML/SFML.git
synced 2025-02-12 11:28:00 +08:00
[Android] Redirect error messages to logcat by default
This commit is contained in:
parent
dd6b54d0eb
commit
f491e94297
@ -42,6 +42,7 @@
|
|||||||
#include <SFML/System/Sleep.hpp>
|
#include <SFML/System/Sleep.hpp>
|
||||||
#include <SFML/System/Thread.hpp>
|
#include <SFML/System/Thread.hpp>
|
||||||
#include <SFML/System/Lock.hpp>
|
#include <SFML/System/Lock.hpp>
|
||||||
|
#include <SFML/System/Err.hpp>
|
||||||
#include <android/window.h>
|
#include <android/window.h>
|
||||||
#include <android/native_activity.h>
|
#include <android/native_activity.h>
|
||||||
|
|
||||||
@ -485,6 +486,9 @@ void ANativeActivity_onCreate(ANativeActivity* activity, void* savedState, size_
|
|||||||
|
|
||||||
getScreenSizeInPixels(activity, &states->screenSize.x, &states->screenSize.y);
|
getScreenSizeInPixels(activity, &states->screenSize.x, &states->screenSize.y);
|
||||||
|
|
||||||
|
// Redirect error messages to logcat
|
||||||
|
sf::err().rdbuf(&states->logcat);
|
||||||
|
|
||||||
// Launch the main thread
|
// Launch the main thread
|
||||||
sf::Thread* thread = new sf::Thread(sf::priv::main, states);
|
sf::Thread* thread = new sf::Thread(sf::priv::main, states);
|
||||||
thread->launch();
|
thread->launch();
|
||||||
|
@ -28,6 +28,29 @@
|
|||||||
// Headers
|
// Headers
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
#include <SFML/System/Android/Activity.hpp>
|
#include <SFML/System/Android/Activity.hpp>
|
||||||
|
#include <android/log.h>
|
||||||
|
|
||||||
|
#define LOGE(...) ((void)__android_log_print(ANDROID_LOG_INFO, "sfml-error", __VA_ARGS__))
|
||||||
|
|
||||||
|
LogcatStream::LogcatStream() :
|
||||||
|
std::streambuf()
|
||||||
|
{
|
||||||
|
// Nothing to do
|
||||||
|
}
|
||||||
|
|
||||||
|
std::streambuf::int_type LogcatStream::overflow (std::streambuf::int_type c)
|
||||||
|
{
|
||||||
|
if (c == "\n"[0])
|
||||||
|
{
|
||||||
|
m_message.push_back(c);
|
||||||
|
LOGE(m_message.c_str());
|
||||||
|
m_message.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
m_message.push_back(c);
|
||||||
|
|
||||||
|
return traits_type::not_eof(c);
|
||||||
|
}
|
||||||
|
|
||||||
namespace sf
|
namespace sf
|
||||||
{
|
{
|
||||||
|
@ -36,7 +36,19 @@
|
|||||||
#include <EGL/egl.h>
|
#include <EGL/egl.h>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <map>
|
#include <map>
|
||||||
|
#include <string>
|
||||||
|
#include <fstream>
|
||||||
|
|
||||||
|
class SFML_SYSTEM_API LogcatStream : public std::streambuf
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
LogcatStream();
|
||||||
|
|
||||||
|
std::streambuf::int_type overflow (std::streambuf::int_type c);
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::string m_message;
|
||||||
|
};
|
||||||
|
|
||||||
namespace sf
|
namespace sf
|
||||||
{
|
{
|
||||||
@ -76,6 +88,8 @@ struct ActivityStates
|
|||||||
bool fullscreen;
|
bool fullscreen;
|
||||||
|
|
||||||
bool updated;
|
bool updated;
|
||||||
|
|
||||||
|
LogcatStream logcat;
|
||||||
};
|
};
|
||||||
|
|
||||||
SFML_SYSTEM_API ActivityStates* getActivity(ActivityStates* initializedStates=NULL, bool reset=false);
|
SFML_SYSTEM_API ActivityStates* getActivity(ActivityStates* initializedStates=NULL, bool reset=false);
|
||||||
|
@ -90,7 +90,7 @@ if(SFML_OS_WINDOWS)
|
|||||||
list(APPEND SYSTEM_EXT_LIBS winmm)
|
list(APPEND SYSTEM_EXT_LIBS winmm)
|
||||||
endif()
|
endif()
|
||||||
if(SFML_OS_ANDROID)
|
if(SFML_OS_ANDROID)
|
||||||
list(APPEND SYSTEM_EXT_LIBS android)
|
list(APPEND SYSTEM_EXT_LIBS android log)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# define the sfml-system target
|
# define the sfml-system target
|
||||||
|
Loading…
x
Reference in New Issue
Block a user