mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-22 03:00:46 +03:00
Disable call support, when GStreamer is unavailable
Integrating that in our CI is currently a bit hard, so disable it for now, if GStreamer isn't found. Just make sure to build against GStreamer for call support!
This commit is contained in:
parent
29cb065102
commit
f157602a52
4 changed files with 83 additions and 5 deletions
|
@ -427,8 +427,7 @@ else()
|
|||
endif()
|
||||
|
||||
include(FindPkgConfig)
|
||||
pkg_check_modules(GST_SDP REQUIRED IMPORTED_TARGET gstreamer-sdp-1.0>=1.14)
|
||||
pkg_check_modules(GST_WEBRTC REQUIRED IMPORTED_TARGET gstreamer-webrtc-1.0>=1.14)
|
||||
pkg_check_modules(GSTREAMER IMPORTED_TARGET gstreamer-sdp-1.0>=1.14 gstreamer-webrtc-1.0>=1.14)
|
||||
|
||||
# single instance functionality
|
||||
set(QAPPLICATION_CLASS QApplication CACHE STRING "Inheritance class for SingleApplication")
|
||||
|
@ -595,8 +594,6 @@ target_link_libraries(nheko PRIVATE
|
|||
lmdbxx::lmdbxx
|
||||
liblmdb::lmdb
|
||||
tweeny
|
||||
PkgConfig::GST_SDP
|
||||
PkgConfig::GST_WEBRTC
|
||||
SingleApplication::SingleApplication)
|
||||
|
||||
if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.16.0")
|
||||
|
@ -606,6 +603,11 @@ target_precompile_headers(nheko
|
|||
)
|
||||
endif()
|
||||
|
||||
if (TARGET PkgConfig::GSTREAMER)
|
||||
target_link_libraries(nheko PRIVATE PkgConfig::GSTREAMER)
|
||||
target_compile_definitions(nheko PRIVATE GSTREAMER_AVAILABLE)
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
target_link_libraries(nheko PRIVATE ntdll)
|
||||
endif()
|
||||
|
|
|
@ -201,9 +201,13 @@ CallManager::onActiveCall()
|
|||
void
|
||||
CallManager::syncEvent(const mtx::events::collections::TimelineEvents &event)
|
||||
{
|
||||
#ifdef GSTREAMER_AVAILABLE
|
||||
if (handleEvent_<CallInvite>(event) || handleEvent_<CallCandidates>(event) ||
|
||||
handleEvent_<CallAnswer>(event) || handleEvent_<CallHangUp>(event))
|
||||
return;
|
||||
#else
|
||||
(void)event;
|
||||
#endif
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
|
|
|
@ -453,12 +453,14 @@ TextInputWidget::TextInputWidget(QWidget *parent)
|
|||
topLayout_->setSpacing(0);
|
||||
topLayout_->setContentsMargins(13, 1, 13, 0);
|
||||
|
||||
#ifdef GSTREAMER_AVAILABLE
|
||||
callBtn_ = new FlatButton(this);
|
||||
changeCallButtonState(WebRTCSession::State::DISCONNECTED);
|
||||
connect(&WebRTCSession::instance(),
|
||||
&WebRTCSession::stateChanged,
|
||||
this,
|
||||
&TextInputWidget::changeCallButtonState);
|
||||
#endif
|
||||
|
||||
QIcon send_file_icon;
|
||||
send_file_icon.addFile(":/icons/icons/ui/paper-clip-outline.png");
|
||||
|
@ -528,7 +530,9 @@ TextInputWidget::TextInputWidget(QWidget *parent)
|
|||
emojiBtn_->setIcon(emoji_icon);
|
||||
emojiBtn_->setIconSize(QSize(ButtonHeight, ButtonHeight));
|
||||
|
||||
#ifdef GSTREAMER_AVAILABLE
|
||||
topLayout_->addWidget(callBtn_);
|
||||
#endif
|
||||
topLayout_->addWidget(sendFileBtn_);
|
||||
topLayout_->addWidget(input_);
|
||||
topLayout_->addWidget(emojiBtn_);
|
||||
|
@ -536,7 +540,9 @@ TextInputWidget::TextInputWidget(QWidget *parent)
|
|||
|
||||
setLayout(topLayout_);
|
||||
|
||||
#ifdef GSTREAMER_AVAILABLE
|
||||
connect(callBtn_, &FlatButton::clicked, this, &TextInputWidget::callButtonPress);
|
||||
#endif
|
||||
connect(sendMessageBtn_, &FlatButton::clicked, input_, &FilteredTextEdit::submit);
|
||||
connect(sendFileBtn_, SIGNAL(clicked()), this, SLOT(openFileSelection()));
|
||||
connect(input_, &FilteredTextEdit::message, this, &TextInputWidget::sendTextMessage);
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#include "Logging.h"
|
||||
#include "WebRTCSession.h"
|
||||
|
||||
#ifdef GSTREAMER_AVAILABLE
|
||||
extern "C"
|
||||
{
|
||||
#include "gst/gst.h"
|
||||
|
@ -11,6 +12,7 @@ extern "C"
|
|||
#define GST_USE_UNSTABLE_API
|
||||
#include "gst/webrtc/webrtc.h"
|
||||
}
|
||||
#endif
|
||||
|
||||
Q_DECLARE_METATYPE(WebRTCSession::State)
|
||||
|
||||
|
@ -24,6 +26,7 @@ WebRTCSession::WebRTCSession()
|
|||
bool
|
||||
WebRTCSession::init(std::string *errorMessage)
|
||||
{
|
||||
#ifdef GSTREAMER_AVAILABLE
|
||||
if (initialised_)
|
||||
return true;
|
||||
|
||||
|
@ -81,10 +84,14 @@ WebRTCSession::init(std::string *errorMessage)
|
|||
*errorMessage = strError;
|
||||
}
|
||||
return initialised_;
|
||||
#else
|
||||
(void)errorMessage;
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef GSTREAMER_AVAILABLE
|
||||
namespace {
|
||||
|
||||
bool isoffering_;
|
||||
std::string localsdp_;
|
||||
std::vector<mtx::events::msg::CallCandidates::Candidate> localcandidates_;
|
||||
|
@ -631,3 +638,62 @@ WebRTCSession::getAudioSourceNames(const std::string &defaultDevice)
|
|||
}
|
||||
return ret;
|
||||
}
|
||||
#else
|
||||
|
||||
bool
|
||||
WebRTCSession::createOffer()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool
|
||||
WebRTCSession::acceptOffer(const std::string &)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool
|
||||
WebRTCSession::acceptAnswer(const std::string &)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
void
|
||||
WebRTCSession::acceptICECandidates(const std::vector<mtx::events::msg::CallCandidates::Candidate> &)
|
||||
{}
|
||||
|
||||
bool
|
||||
WebRTCSession::startPipeline(int)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool
|
||||
WebRTCSession::createPipeline(int)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool
|
||||
WebRTCSession::toggleMuteAudioSrc(bool &)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
void
|
||||
WebRTCSession::end()
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
WebRTCSession::refreshDevices()
|
||||
{
|
||||
}
|
||||
|
||||
std::vector<std::string>
|
||||
WebRTCSession::getAudioSourceNames(const std::string &)
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue