mirror of
https://git.sr.ht/~thestr4ng3r/chiaki
synced 2025-08-14 18:57:07 -07:00
Add SessionLog
This commit is contained in:
parent
da719d8b8a
commit
c4921ad682
16 changed files with 187 additions and 87 deletions
|
@ -31,6 +31,8 @@ add_executable(chiaki
|
|||
src/discoverymanager.cpp
|
||||
include/streamsession.h
|
||||
src/streamsession.cpp
|
||||
include/sessionlog.h
|
||||
src/sessionlog.cpp
|
||||
include/avopenglwidget.h
|
||||
src/avopenglwidget.cpp
|
||||
include/avopenglframeuploader.h
|
||||
|
|
44
gui/include/sessionlog.h
Normal file
44
gui/include/sessionlog.h
Normal file
|
@ -0,0 +1,44 @@
|
|||
/*
|
||||
* This file is part of Chiaki.
|
||||
*
|
||||
* Chiaki is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Chiaki is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Chiaki. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef CHIAKI_SESSIONLOG_H
|
||||
#define CHIAKI_SESSIONLOG_H
|
||||
|
||||
#include <chiaki/log.h>
|
||||
|
||||
#include <QString>
|
||||
|
||||
class StreamSession;
|
||||
|
||||
class SessionLog
|
||||
{
|
||||
friend class SessionLogPrivate;
|
||||
|
||||
private:
|
||||
StreamSession *session;
|
||||
ChiakiLog chiaki_log;
|
||||
|
||||
void Log(ChiakiLogLevel level, const char *msg);
|
||||
|
||||
public:
|
||||
SessionLog(StreamSession *session, uint32_t level_mask, const QString &filename);
|
||||
|
||||
ChiakiLog *GetChiakiLog() { return &chiaki_log; }
|
||||
|
||||
};
|
||||
|
||||
#endif //CHIAKI_SESSIONLOG_H
|
|
@ -20,6 +20,7 @@
|
|||
|
||||
#include "videodecoder.h"
|
||||
#include "exception.h"
|
||||
#include "sessionlog.h"
|
||||
|
||||
#include <QObject>
|
||||
#include <QImage>
|
||||
|
@ -42,6 +43,8 @@ class ChiakiException: public Exception
|
|||
|
||||
struct StreamSessionConnectInfo
|
||||
{
|
||||
uint32_t log_level_mask;
|
||||
QString log_file;
|
||||
QString host;
|
||||
QString registkey;
|
||||
QString ostype;
|
||||
|
@ -58,6 +61,7 @@ class StreamSession : public QObject
|
|||
Q_OBJECT
|
||||
|
||||
private:
|
||||
SessionLog log;
|
||||
ChiakiSession session;
|
||||
|
||||
#if CHIAKI_GUI_ENABLE_QT_GAMEPAD
|
||||
|
|
|
@ -63,6 +63,9 @@ int main(int argc, char *argv[])
|
|||
if(args[0] == "stream")
|
||||
{
|
||||
StreamSessionConnectInfo connect_info;
|
||||
|
||||
connect_info.log_level_mask = CHIAKI_LOG_ALL & ~CHIAKI_LOG_VERBOSE;
|
||||
|
||||
connect_info.host = host;
|
||||
connect_info.registkey = parser.value(regist_key_option);
|
||||
connect_info.ostype = parser.value(ostype_option);
|
||||
|
|
46
gui/src/sessionlog.cpp
Normal file
46
gui/src/sessionlog.cpp
Normal file
|
@ -0,0 +1,46 @@
|
|||
/*
|
||||
* This file is part of Chiaki.
|
||||
*
|
||||
* Chiaki is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Chiaki is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Chiaki. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <sessionlog.h>
|
||||
#include <chiaki/log.h>
|
||||
|
||||
static void LogCb(ChiakiLogLevel level, const char *msg, void *user);
|
||||
|
||||
SessionLog::SessionLog(StreamSession *session, uint32_t level_mask, const QString &filename)
|
||||
: session(session)
|
||||
{
|
||||
chiaki_log_init(&chiaki_log, level_mask, LogCb, this);
|
||||
|
||||
// TODO: file
|
||||
}
|
||||
|
||||
void SessionLog::Log(ChiakiLogLevel level, const char *msg)
|
||||
{
|
||||
chiaki_log_cb_print(level, msg, nullptr);
|
||||
}
|
||||
|
||||
class SessionLogPrivate
|
||||
{
|
||||
public:
|
||||
static void Log(SessionLog *log, ChiakiLogLevel level, const char *msg) { log->Log(level, msg); }
|
||||
};
|
||||
|
||||
static void LogCb(ChiakiLogLevel level, const char *msg, void *user)
|
||||
{
|
||||
auto log = reinterpret_cast<SessionLog *>(user);
|
||||
SessionLogPrivate::Log(log, level, msg);
|
||||
}
|
|
@ -35,7 +35,8 @@ static void VideoSampleCb(uint8_t *buf, size_t buf_size, void *user);
|
|||
static void EventCb(ChiakiEvent *event, void *user);
|
||||
|
||||
StreamSession::StreamSession(const StreamSessionConnectInfo &connect_info, QObject *parent)
|
||||
: QObject(parent)
|
||||
: QObject(parent),
|
||||
log(this, connect_info.log_level_mask, connect_info.log_file)
|
||||
#if CHIAKI_GUI_ENABLE_QT_GAMEPAD
|
||||
,gamepad(nullptr)
|
||||
#endif
|
||||
|
@ -89,7 +90,7 @@ StreamSession::StreamSession(const StreamSessionConnectInfo &connect_info, QObje
|
|||
|
||||
memset(&keyboard_state, 0, sizeof(keyboard_state));
|
||||
|
||||
err = chiaki_session_init(&session, &chiaki_connect_info);
|
||||
err = chiaki_session_init(&session, &chiaki_connect_info, log.GetChiakiLog());
|
||||
if(err != CHIAKI_ERR_SUCCESS)
|
||||
throw ChiakiException("Chiaki Session Init failed: " + QString::fromLocal8Bit(chiaki_error_string(err)));
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue