From c70580ede6f42f77c7be382f5b0a592f44d2782e Mon Sep 17 00:00:00 2001 From: Willy Sudiarto Raharjo Date: Sun, 10 Dec 2023 12:19:30 +0700 Subject: academic/openboard: Updated for version 1.7.0. Signed-off-by: Willy Sudiarto Raharjo --- academic/openboard/31755fe30cf.patch | 505 ------------------------------- academic/openboard/README | 3 + academic/openboard/openboard.SlackBuild | 17 +- academic/openboard/openboard.info | 6 +- academic/openboard/quazip.patch | 19 +- academic/openboard/run-in-a-window.patch | 154 ---------- 6 files changed, 19 insertions(+), 685 deletions(-) delete mode 100644 academic/openboard/31755fe30cf.patch delete mode 100644 academic/openboard/run-in-a-window.patch (limited to 'academic/openboard') diff --git a/academic/openboard/31755fe30cf.patch b/academic/openboard/31755fe30cf.patch deleted file mode 100644 index 948fe30d06..0000000000 --- a/academic/openboard/31755fe30cf.patch +++ /dev/null @@ -1,505 +0,0 @@ -From c5f8d4b5b7d43c99ddcd2b9bcbe4ec4b7beddad9 Mon Sep 17 00:00:00 2001 -From: letsfindaway -Date: Wed, 18 May 2022 12:13:46 +0200 -Subject: [PATCH 1/2] fix: make UBFFmpegVideoEncoder compatible with ffmpeg-5 - -- keep separate reference to AVCodecContext -- copy parameters to AVCodecParameters -- use new API in writeFrame -- use AVChannelLayout ---- - src/podcast/ffmpeg/UBFFmpegVideoEncoder.cpp | 182 ++++++++++++++------ - src/podcast/ffmpeg/UBFFmpegVideoEncoder.h | 2 + - 2 files changed, 134 insertions(+), 50 deletions(-) - -diff --git a/src/podcast/ffmpeg/UBFFmpegVideoEncoder.cpp b/src/podcast/ffmpeg/UBFFmpegVideoEncoder.cpp -index 0e4829c49..4fd84d740 100644 ---- a/src/podcast/ffmpeg/UBFFmpegVideoEncoder.cpp -+++ b/src/podcast/ffmpeg/UBFFmpegVideoEncoder.cpp -@@ -45,20 +45,20 @@ - AVFormatContext *s = avformat_alloc_context(); - int ret = 0; - -- *avctx = NULL; -+ *avctx = nullptr; - if (!s) - goto nomem; - - if (!oformat) { - if (format) { -- oformat = av_guess_format(format, NULL, NULL); -+ oformat = av_guess_format(format, nullptr, nullptr); - if (!oformat) { - av_log(s, AV_LOG_ERROR, "Requested output format '%s' is not a suitable output format\n", format); - ret = AVERROR(EINVAL); - goto error; - } - } else { -- oformat = av_guess_format(NULL, filename, NULL); -+ oformat = av_guess_format(nullptr, filename, nullptr); - if (!oformat) { - ret = AVERROR(EINVAL); - av_log(s, AV_LOG_ERROR, "Unable to find a suitable output format for '%s'\n", -@@ -78,7 +78,7 @@ - av_opt_set_defaults(s->priv_data); - } - } else -- s->priv_data = NULL; -+ s->priv_data = nullptr; - - if (filename) - av_strlcpy(s->filename, filename, sizeof(s->filename)); -@@ -168,15 +168,17 @@ QString avErrorToQString(int errnum) - /** - * @brief Write a given frame to the audio stream or, if a null frame is passed, flush the stream. - * -- * @param frame An AVFrame to be written to the stream, or NULL to flush the stream -+ * @param frame An AVFrame to be written to the stream, or nullptr to flush the stream - * @param packet A (reusable) packet, used to temporarily store frame data - * @param stream The stream to write to - * @param outputFormatContext The output format context - */ --void writeFrame(AVFrame *frame, AVPacket *packet, AVStream *stream, AVFormatContext *outputFormatContext) -+void writeFrame(AVFrame *frame, AVPacket *packet, AVStream *stream, AVCodecContext* c, AVFormatContext *outputFormatContext) - { -- int gotOutput, ret; -+ int ret; - -+#if LIBAVFORMAT_VERSION_MAJOR < 58 -+ int gotOutput; - av_init_packet(packet); - - do { -@@ -200,11 +202,34 @@ void writeFrame(AVFrame *frame, AVPacket *packet, AVStream *stream, AVFormatCont - } - - } while (gotOutput && !frame); -+#else -+ // send the frame to the encoder -+ ret = avcodec_send_frame(c, frame); -+ -+ while (ret >= 0) { -+ ret = avcodec_receive_packet(c, packet); -+ if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF) -+ break; -+ else if (ret < 0) { -+ qWarning() << "Couldn't encode audio frame: " << avErrorToQString(ret); -+ } -+ -+ /* rescale output packet timestamp values from codec to stream timebase */ -+ av_packet_rescale_ts(packet, c->time_base, stream->time_base); -+ packet->stream_index = stream->index; -+ -+ /* Write the compressed frame to the media file. */ -+ ret = av_interleaved_write_frame(outputFormatContext, packet); -+ /* pkt is now blank (av_interleaved_write_frame() takes ownership of -+ * its contents and resets pkt), so that no unreferencing is necessary. -+ * This would be different if one used av_write_frame(). */ -+ } -+#endif - } - --void flushStream(AVPacket *packet, AVStream *stream, AVFormatContext *outputFormatContext) -+void flushStream(AVPacket *packet, AVStream *stream, AVCodecContext* c, AVFormatContext *outputFormatContext) - { -- writeFrame(NULL, packet, stream, outputFormatContext); -+ writeFrame(nullptr, packet, stream, c, outputFormatContext); - } - - //------------------------------------------------------------------------- -@@ -213,12 +238,12 @@ void flushStream(AVPacket *packet, AVStream *stream, AVFormatContext *outputForm - - UBFFmpegVideoEncoder::UBFFmpegVideoEncoder(QObject* parent) - : UBAbstractVideoEncoder(parent) -- , mOutputFormatContext(NULL) -- , mSwsContext(NULL) -+ , mOutputFormatContext(nullptr) -+ , mSwsContext(nullptr) - , mShouldRecordAudio(true) -- , mAudioInput(NULL) -- , mSwrContext(NULL) -- , mAudioOutBuffer(NULL) -+ , mAudioInput(nullptr) -+ , mSwrContext(nullptr) -+ , mAudioOutBuffer(nullptr) - , mAudioSampleRate(44100) - , mAudioFrameCount(0) - { -@@ -288,16 +313,18 @@ bool UBFFmpegVideoEncoder::stop() - - bool UBFFmpegVideoEncoder::init() - { -+#if LIBAVFORMAT_VERSION_MAJOR < 58 - av_register_all(); - avcodec_register_all(); -+#endif - -- AVDictionary * options = NULL; -+ AVDictionary * options = nullptr; - int ret; - - // Output format and context - // -------------------------------------- -- if (avformat_alloc_output_context2(&mOutputFormatContext, NULL, -- "mp4", NULL) < 0) -+ if (avformat_alloc_output_context2(&mOutputFormatContext, nullptr, -+ "mp4", nullptr) < 0) - { - setLastErrorMessage("Couldn't allocate video format context"); - return false; -@@ -308,16 +335,25 @@ bool UBFFmpegVideoEncoder::init() - - // Video codec and context - // ------------------------------------- -- mVideoStream = avformat_new_stream(mOutputFormatContext, 0); -+ mVideoStream = avformat_new_stream(mOutputFormatContext, nullptr); -+ if (!mVideoStream) { -+ setLastErrorMessage("Could not allocate stream"); -+ return false; -+ } - -- AVCodec * videoCodec = avcodec_find_encoder(mOutputFormatContext->oformat->video_codec); -+ auto videoCodec = avcodec_find_encoder(mOutputFormatContext->oformat->video_codec); - if (!videoCodec) { - setLastErrorMessage("Video codec not found"); - return false; - } - - AVCodecContext* c = avcodec_alloc_context3(videoCodec); -+ if (!c) { -+ setLastErrorMessage("Could not allocate encoding context"); -+ return false; -+ } - -+ c->codec_id = mOutputFormatContext->oformat->video_codec; - c->bit_rate = videoBitsPerSecond(); - c->width = videoSize().width(); - c->height = videoSize().height(); -@@ -329,6 +365,8 @@ bool UBFFmpegVideoEncoder::init() - if (mOutputFormatContext->oformat->flags & AVFMT_GLOBALHEADER) - c->flags |= AV_CODEC_FLAG_GLOBAL_HEADER; - -+ mVideoStream->time_base = c->time_base; -+ - /* - * Supported pixel formats for h264 are: - * AV_PIX_FMT_YUV420P -@@ -347,13 +385,20 @@ bool UBFFmpegVideoEncoder::init() - return false; - } - -- mVideoStream->codec = c; -+ mVideoCodecContext = c; -+ -+ // copy the stream parameters to the muxer -+ ret = avcodec_parameters_from_context(mVideoStream->codecpar, c); -+ if (ret < 0) { -+ setLastErrorMessage("Could not copy the stream parameters"); -+ return false; -+ } - - // Source images are RGB32, and should be converted to YUV for h264 video - mSwsContext = sws_getCachedContext(mSwsContext, - c->width, c->height, AV_PIX_FMT_RGB32, - c->width, c->height, c->pix_fmt, -- SWS_BICUBIC, 0, 0, 0); -+ SWS_BICUBIC, nullptr, nullptr, nullptr); - - // Audio codec and context - // ------------------------------------- -@@ -381,7 +426,7 @@ bool UBFFmpegVideoEncoder::init() - - // Codec - -- AVCodec * audioCodec = avcodec_find_encoder(mOutputFormatContext->oformat->audio_codec); -+ auto audioCodec = avcodec_find_encoder(mOutputFormatContext->oformat->audio_codec); - - if (!audioCodec) { - setLastErrorMessage("Audio codec not found"); -@@ -389,15 +434,29 @@ bool UBFFmpegVideoEncoder::init() - } - - mAudioStream = avformat_new_stream(mOutputFormatContext, audioCodec); -+ if (!mAudioStream) { -+ setLastErrorMessage("Could not allocate stream"); -+ return false; -+ } -+ - mAudioStream->id = mOutputFormatContext->nb_streams-1; - -- c = mAudioStream->codec; -+ c = avcodec_alloc_context3(audioCodec); -+ if (!c) { -+ setLastErrorMessage("Could not allocate encoding context"); -+ return false; -+ } - - c->bit_rate = 96000; - c->sample_fmt = audioCodec->sample_fmts ? audioCodec->sample_fmts[0] : AV_SAMPLE_FMT_FLTP;// FLTP by default for AAC - c->sample_rate = mAudioSampleRate; -+ -+#if LIBAVUTIL_VERSION_INT < AV_VERSION_INT(57, 25, 100) - c->channel_layout = AV_CH_LAYOUT_STEREO; - c->channels = av_get_channel_layout_nb_channels(c->channel_layout); -+#else -+ av_channel_layout_copy(&c->ch_layout, &(AVChannelLayout)AV_CHANNEL_LAYOUT_STEREO); -+#endif - - //deprecated on ffmpeg 4 - c->strict_std_compliance = -2;// Enable use of experimental codec -@@ -412,13 +471,22 @@ bool UBFFmpegVideoEncoder::init() - if (mOutputFormatContext->oformat->flags & AVFMT_GLOBALHEADER) - c->flags |= AV_CODEC_FLAG_GLOBAL_HEADER; - -- ret = avcodec_open2(c, audioCodec, NULL); -+ ret = avcodec_open2(c, audioCodec, nullptr); - - if (ret < 0) { - setLastErrorMessage(QString("Couldn't open audio codec: ") + avErrorToQString(ret)); - return false; - } - -+ mAudioCodecContext = c; -+ -+ // copy the stream parameters to the muxer -+ ret = avcodec_parameters_from_context(mAudioStream->codecpar, c); -+ if (ret < 0) { -+ setLastErrorMessage("Could not copy the stream parameters"); -+ return false; -+ } -+ - // The input (raw sound from the microphone) may not match the codec's sampling rate, - // sample format or number of channels; we use libswresample to convert and resample it - mSwrContext = swr_alloc(); -@@ -427,15 +495,23 @@ bool UBFFmpegVideoEncoder::init() - return false; - } - -- av_opt_set_int(mSwrContext, "in_channel_count", inChannelCount, 0); -- av_opt_set_int(mSwrContext, "in_channel_layout", av_get_default_channel_layout(inChannelCount), 0); - av_opt_set_int(mSwrContext, "in_sample_rate", inSampleRate, 0); - av_opt_set_sample_fmt(mSwrContext, "in_sample_fmt", (AVSampleFormat)mAudioInput->sampleFormat(), 0); -- av_opt_set_int(mSwrContext, "out_channel_count", c->channels, 0); -- av_opt_set_int(mSwrContext, "out_channel_layout", c->channel_layout, 0); - av_opt_set_int(mSwrContext, "out_sample_rate", c->sample_rate, 0); - av_opt_set_sample_fmt(mSwrContext, "out_sample_fmt", c->sample_fmt, 0); - -+#if LIBAVUTIL_VERSION_INT < AV_VERSION_INT(57, 25, 100) -+ av_opt_set_int(mSwrContext, "in_channel_count", inChannelCount, 0); -+ av_opt_set_int(mSwrContext, "in_channel_layout", av_get_default_channel_layout(inChannelCount), 0); -+ av_opt_set_int(mSwrContext, "out_channel_count", c->channels, 0); -+ av_opt_set_int(mSwrContext, "out_channel_layout", c->channel_layout, 0); -+#else -+ AVChannelLayout inChannelLayout; -+ av_channel_layout_default(&inChannelLayout, inChannelCount); -+ av_opt_set_chlayout (mSwrContext, "in_chlayout", &inChannelLayout, 0); -+ av_opt_set_chlayout (mSwrContext, "out_chlayout", &c->ch_layout, 0); -+#endif -+ - ret = swr_init(mSwrContext); - if (ret < 0) { - setLastErrorMessage(QString("Couldn't initialize the resampling context: ") + avErrorToQString(ret)); -@@ -456,7 +532,7 @@ bool UBFFmpegVideoEncoder::init() - } - - // Write stream header -- ret = avformat_write_header(mOutputFormatContext, NULL); -+ ret = avformat_write_header(mOutputFormatContext, nullptr); - - if (ret < 0) { - setLastErrorMessage(QString("Couldn't write header to file: ") + avErrorToQString(ret)); -@@ -506,9 +582,9 @@ AVFrame* UBFFmpegVideoEncoder::convertImageFrame(ImageFrame frame) - { - AVFrame* avFrame = av_frame_alloc(); - -- avFrame->format = mVideoStream->codec->pix_fmt; -- avFrame->width = mVideoStream->codec->width; -- avFrame->height = mVideoStream->codec->height; -+ avFrame->format = mVideoCodecContext->pix_fmt; -+ avFrame->width = mVideoCodecContext->width; -+ avFrame->height = mVideoCodecContext->height; - avFrame->pts = mVideoTimebase * frame.timestamp / 1000; - - const uchar * rgbImage = frame.image.bits(); -@@ -516,18 +592,18 @@ AVFrame* UBFFmpegVideoEncoder::convertImageFrame(ImageFrame frame) - const int in_linesize[1] = { frame.image.bytesPerLine() }; - - // Allocate the output image -- if (av_image_alloc(avFrame->data, avFrame->linesize, mVideoStream->codec->width, -- mVideoStream->codec->height, mVideoStream->codec->pix_fmt, 32) < 0) -+ if (av_image_alloc(avFrame->data, avFrame->linesize, mVideoCodecContext->width, -+ mVideoCodecContext->height, mVideoCodecContext->pix_fmt, 32) < 0) - { - qWarning() << "Couldn't allocate image"; -- return NULL; -+ return nullptr; - } - - sws_scale(mSwsContext, - (const uint8_t* const*)&rgbImage, - in_linesize, - 0, -- mVideoStream->codec->height, -+ mVideoCodecContext->height, - avFrame->data, - avFrame->linesize); - -@@ -548,7 +624,7 @@ void UBFFmpegVideoEncoder::onAudioAvailable(QByteArray data) - void UBFFmpegVideoEncoder::processAudio(QByteArray &data) - { - int ret; -- AVCodecContext* codecContext = mAudioStream->codec; -+ AVCodecContext* codecContext = mAudioCodecContext; - - const char * inSamples = data.constData(); - -@@ -559,7 +635,7 @@ void UBFFmpegVideoEncoder::processAudio(QByteArray &data) - int outSamplesCount = swr_get_out_samples(mSwrContext, inSamplesCount); - - // Allocate output samples -- uint8_t ** outSamples = NULL; -+ uint8_t ** outSamples = nullptr; - int outSamplesLineSize; - - ret = av_samples_alloc_array_and_samples(&outSamples, &outSamplesLineSize, -@@ -597,13 +673,19 @@ void UBFFmpegVideoEncoder::processAudio(QByteArray &data) - - AVFrame * avFrame = av_frame_alloc(); - avFrame->nb_samples = codecContext->frame_size; -+ -+#if LIBAVUTIL_VERSION_INT < AV_VERSION_INT(57, 25, 100) - avFrame->channel_layout = codecContext->channel_layout; -+#else -+ av_channel_layout_copy(&avFrame->ch_layout, &codecContext->ch_layout); -+#endif -+ - avFrame->format = codecContext->sample_fmt; - avFrame->sample_rate = codecContext->sample_rate; - avFrame->pts = mAudioFrameCount; - - #if LIBAVFORMAT_VERSION_MICRO < 100 -- int buffer_size = av_samples_get_buffer_size(NULL, codecContext->channels, codecContext->frame_size, codecContext->sample_fmt, 0); -+ int buffer_size = av_samples_get_buffer_size(nullptr, codecContext->channels, codecContext->frame_size, codecContext->sample_fmt, 0); - audio_samples_buffer = (uint8_t*)av_malloc(buffer_size); - if (!audio_samples_buffer) { - qWarning() << "Couldn't allocate samples for audio frame: " << avErrorToQString(ret); -@@ -645,19 +727,19 @@ void UBFFmpegVideoEncoder::finishEncoding() - { - qDebug() << "VideoEncoder::finishEncoding called"; - -- flushStream(mVideoWorker->mVideoPacket, mVideoStream, mOutputFormatContext); -+ flushStream(mVideoWorker->mVideoPacket, mVideoStream, mVideoCodecContext, mOutputFormatContext); - - if (mShouldRecordAudio) -- flushStream(mVideoWorker->mAudioPacket, mAudioStream, mOutputFormatContext); -+ flushStream(mVideoWorker->mAudioPacket, mAudioStream, mAudioCodecContext, mOutputFormatContext); - - av_write_trailer(mOutputFormatContext); - avio_close(mOutputFormatContext->pb); - -- avcodec_close(mVideoStream->codec); -+ avcodec_close(mVideoCodecContext); - sws_freeContext(mSwsContext); - - if (mShouldRecordAudio) { -- avcodec_close(mAudioStream->codec); -+ avcodec_close(mAudioCodecContext); - swr_free(&mSwrContext); - } - -@@ -676,17 +758,17 @@ UBFFmpegVideoEncoderWorker::UBFFmpegVideoEncoderWorker(UBFFmpegVideoEncoder* con - { - mStopRequested = false; - mIsRunning = false; -- mVideoPacket = new AVPacket(); -- mAudioPacket = new AVPacket(); -+ mVideoPacket = av_packet_alloc(); -+ mAudioPacket = av_packet_alloc(); - } - - UBFFmpegVideoEncoderWorker::~UBFFmpegVideoEncoderWorker() - { - if (mVideoPacket) -- delete mVideoPacket; -+ av_packet_free(&mVideoPacket); - - if (mAudioPacket) -- delete mAudioPacket; -+ av_packet_free(&mAudioPacket); - } - - void UBFFmpegVideoEncoderWorker::stopEncoding() -@@ -743,7 +825,7 @@ void UBFFmpegVideoEncoderWorker::runEncoding() - void UBFFmpegVideoEncoderWorker::writeLatestVideoFrame() - { - AVFrame* frame = mImageQueue.dequeue(); -- writeFrame(frame, mVideoPacket, mController->mVideoStream, mController->mOutputFormatContext); -+ writeFrame(frame, mVideoPacket, mController->mVideoStream, mController->mVideoCodecContext, mController->mOutputFormatContext); - av_freep(&frame->data[0]); - av_frame_free(&frame); - } -@@ -751,14 +833,14 @@ void UBFFmpegVideoEncoderWorker::writeLatestVideoFrame() - void UBFFmpegVideoEncoderWorker::writeLatestAudioFrame() - { - AVFrame *frame = mAudioQueue.dequeue(); -- writeFrame(frame, mAudioPacket, mController->mAudioStream, mController->mOutputFormatContext); -+ writeFrame(frame, mAudioPacket, mController->mAudioStream, mController->mAudioCodecContext, mController->mOutputFormatContext); - av_frame_free(&frame); - - #if LIBAVFORMAT_VERSION_MICRO < 100 - if (audio_samples_buffer) { - av_free(audio_samples_buffer); - av_freep(&frame->data[0]); -- audio_samples_buffer = NULL; -+ audio_samples_buffer = nullptr; - } - #endif - } -diff --git a/src/podcast/ffmpeg/UBFFmpegVideoEncoder.h b/src/podcast/ffmpeg/UBFFmpegVideoEncoder.h -index 1e8a12cfa..14b735064 100644 ---- a/src/podcast/ffmpeg/UBFFmpegVideoEncoder.h -+++ b/src/podcast/ffmpeg/UBFFmpegVideoEncoder.h -@@ -123,6 +123,7 @@ private slots: - - // Video - // ------------------------------------------ -+ AVCodecContext* mVideoCodecContext; - QQueue mPendingFrames; - struct SwsContext * mSwsContext; - -@@ -133,6 +134,7 @@ private slots: - bool mShouldRecordAudio; - - UBMicrophoneInput * mAudioInput; -+ AVCodecContext* mAudioCodecContext; - struct SwrContext * mSwrContext; - /// Queue for audio that has been rescaled/converted but not encoded yet - AVAudioFifo *mAudioOutBuffer; - -From 347af2a56804100c589766ff20768914d8a04903 Mon Sep 17 00:00:00 2001 -From: letsfindaway -Date: Thu, 15 Sep 2022 11:55:17 +0200 -Subject: [PATCH 2/2] fix: avoid taking address of initializer list - -- FFmpeg example code was used for UBFFmpegVideoEncoder.cpp -- channel layout was initialized by taking address of an initializer -- at least for some compilers this fails, as it is an rvalue -- using an explicit variable avoids this ---- - src/podcast/ffmpeg/UBFFmpegVideoEncoder.cpp | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/podcast/ffmpeg/UBFFmpegVideoEncoder.cpp b/src/podcast/ffmpeg/UBFFmpegVideoEncoder.cpp -index 4fd84d740..805ff77e1 100644 ---- a/src/podcast/ffmpeg/UBFFmpegVideoEncoder.cpp -+++ b/src/podcast/ffmpeg/UBFFmpegVideoEncoder.cpp -@@ -455,7 +455,8 @@ bool UBFFmpegVideoEncoder::init() - c->channel_layout = AV_CH_LAYOUT_STEREO; - c->channels = av_get_channel_layout_nb_channels(c->channel_layout); - #else -- av_channel_layout_copy(&c->ch_layout, &(AVChannelLayout)AV_CHANNEL_LAYOUT_STEREO); -+ AVChannelLayout layout = AV_CHANNEL_LAYOUT_STEREO; -+ av_channel_layout_copy(&c->ch_layout, &layout); - #endif - - //deprecated on ffmpeg 4 diff --git a/academic/openboard/README b/academic/openboard/README index 22095c5feb..75711418bc 100644 --- a/academic/openboard/README +++ b/academic/openboard/README @@ -2,3 +2,6 @@ OpenBoard is an open source cross-platform teaching software for interactive whiteboard designed primarily for use in schools and universities. It can be used both with interactive whiteboards or in a dual-screen setup with a pen-tablet display and a beamer. + +NOTE: Support for Qt6 is available upstream but not yet tested +by maintainer. diff --git a/academic/openboard/openboard.SlackBuild b/academic/openboard/openboard.SlackBuild index 20c00e7ef3..d244896916 100644 --- a/academic/openboard/openboard.SlackBuild +++ b/academic/openboard/openboard.SlackBuild @@ -2,7 +2,7 @@ # Slackware build script for openboard -# Copyright 2021-2022 Willy Sudiarto Raharjo +# Copyright 2021-2023 Willy Sudiarto Raharjo # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -26,9 +26,9 @@ cd $(dirname $0) ; CWD=$(pwd) PRGNAM=openboard SRCNAM=OpenBoard -VERSION=${VERSION:-1.6.4} +VERSION=${VERSION:-1.7.0} SRCVER=$(echo $VERSION | tr _ -) -BUILD=${BUILD:-2} +BUILD=${BUILD:-1} TAG=${TAG:-_SBo} PKGTYPE=${PKGTYPE:-tgz} @@ -50,16 +50,12 @@ OUTPUT=${OUTPUT:-/tmp} if [ "$ARCH" = "i586" ]; then SLKCFLAGS="-O2 -march=i586 -mtune=i686" - LIBDIRSUFFIX="" elif [ "$ARCH" = "i686" ]; then SLKCFLAGS="-O2 -march=i686 -mtune=i686" - LIBDIRSUFFIX="" elif [ "$ARCH" = "x86_64" ]; then SLKCFLAGS="-O2" - LIBDIRSUFFIX="64" else SLKCFLAGS="-O2" - LIBDIRSUFFIX="" fi set -e @@ -87,12 +83,6 @@ sed -i "s|lquazip5|lquazip1-qt5|g" OpenBoard.pro QUAZIPVER=`pkg-config --modversion quazip1-qt5` sed -i "s|QuaZip-Qt5-1.1|QuaZip-Qt5-$QUAZIPVER|g" OpenBoard.pro plugins/cffadaptor/UBCFFAdaptor.pro -# Patch to run in a window -patch -p1 < $CWD/run-in-a-window.patch - -# Patch for newer ffmpeg -patch -p1 < $CWD/31755fe30cf.patch - qmake-qt5 OpenBoard.pro -spec linux-g++ make @@ -109,6 +99,7 @@ install -D -m 644 $CWD/openboard.desktop $PKG/usr/share/applications/openboard.d cd $PKG/usr/bin ln -s /opt/openboard/OpenBoard $PKG/usr/bin/openboard ) +strip --strip-unneeded /$PKG/opt/openboard/OpenBoard mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild diff --git a/academic/openboard/openboard.info b/academic/openboard/openboard.info index 68ce0ffad5..20a8614784 100644 --- a/academic/openboard/openboard.info +++ b/academic/openboard/openboard.info @@ -1,8 +1,8 @@ PRGNAM="openboard" -VERSION="1.6.4" +VERSION="1.7.0" HOMEPAGE="https://github.com/OpenBoard-org/OpenBoard/" -DOWNLOAD="https://github.com/OpenBoard-org/OpenBoard/archive/v1.6.4/OpenBoard-1.6.4.tar.gz" -MD5SUM="6b173b95ac8282a7738445ebc2d5f483" +DOWNLOAD="https://github.com/OpenBoard-org/OpenBoard/archive/v1.7.0/OpenBoard-1.7.0.tar.gz" +MD5SUM="8e4b9780efffbd1adca5582fa161fd7e" DOWNLOAD_x86_64="" MD5SUM_x86_64="" REQUIRES="libpaper libass x264 libfdk-aac" diff --git a/academic/openboard/quazip.patch b/academic/openboard/quazip.patch index 782fbff72a..6a5cb79865 100644 --- a/academic/openboard/quazip.patch +++ b/academic/openboard/quazip.patch @@ -28,15 +28,14 @@ - resources/resources.qrc \ No newline at end of file + resources/resources.qrc ---- OpenBoard-1.6.0a3/OpenBoard.pro.orig 2020-07-20 08:23:09.859918480 +0700 -+++ OpenBoard-1.6.0a3/OpenBoard.pro 2020-07-20 08:23:17.762002419 +0700 -@@ -434,7 +434,7 @@ - #LIBS += -lprofiler - LIBS += -lX11 - LIBS += -lquazip5 -- INCLUDEPATH += "/usr/include/quazip5" -+ INCLUDEPATH += "/usr/include/QuaZip-Qt5-1.1/quazip" +--- OpenBoard-1.7.0/OpenBoard.pro.orig 2023-12-10 12:06:17.808153181 +0700 ++++ OpenBoard-1.7.0/OpenBoard.pro 2023-12-10 12:10:09.448432404 +0700 +@@ -470,7 +470,7 @@ + INCLUDEPATH += "/usr/include/quazip6" + } else { + LIBS += -lquazip5 +- INCLUDEPATH += "/usr/include/quazip5" ++ INCLUDEPATH += "/usr/include/QuaZip-Qt5-1.1/quazip" + } LIBS += -lpoppler - INCLUDEPATH += "/usr/include/poppler" - diff --git a/academic/openboard/run-in-a-window.patch b/academic/openboard/run-in-a-window.patch deleted file mode 100644 index 84c9cca3eb..0000000000 --- a/academic/openboard/run-in-a-window.patch +++ /dev/null @@ -1,154 +0,0 @@ -Patch for OpenBoard v. 1.6.0a3 by Roberto Puzzanghera roberto.puzzanghera at sagredo.eu -based on this patch http://webdiis.unizar.es/~spd/openboard/index.html.en - -OpenBoard runs in fullscreen mode. This seems to prevent the possibility to be recognized -by Google meet as an application to share. This patch gets OpenBoard to optionally run in -a window and solves the issue. - -With this patch OB runs in fullscreen mode by default. To run it in a window simply -adjust this option to true in the config file: - -RunInWindow=true - -On linux the location of the config file is /opt/openboard/etc/OpenBoard.config. A user -can override this file acting in local config file ~/.local/share/OpenBoard/OpenBoardUser.config - -============================================================================================= - -diff -ruN OpenBoard-1.6.0a3-original/OpenBoard.pro OpenBoard-1.6.0a3/OpenBoard.pro ---- OpenBoard-1.6.0a3-original/OpenBoard.pro 2020-05-22 18:40:49.000000000 +0200 -+++ OpenBoard-1.6.0a3/OpenBoard.pro 2020-10-24 10:58:50.421254271 +0200 -@@ -442,6 +442,10 @@ - QMAKE_CFLAGS += -fopenmp - QMAKE_CXXFLAGS += -fopenmp - QMAKE_LFLAGS += -fopenmp -+# RunInWindow patch -+ # Necessary for CentOS/RHEL and won't harm in other distributions -+ INCLUDEPATH += /usr/include/ffmpeg -+# end patch - UB_LIBRARY.path = $$DESTDIR - UB_I18N.path = $$DESTDIR/i18n - UB_ETC.path = $$DESTDIR -diff -ruN OpenBoard-1.6.0a3-original/resources/etc/OpenBoard.config OpenBoard-1.6.0a3/resources/etc/OpenBoard.config ---- OpenBoard-1.6.0a3-original/resources/etc/OpenBoard.config 2020-05-22 18:40:49.000000000 +0200 -+++ OpenBoard-1.6.0a3/resources/etc/OpenBoard.config 2020-10-24 10:59:50.005263852 +0200 -@@ -14,6 +14,7 @@ - PageCacheSize=20 - PreferredLanguage=fr_CH - ProductWebAddress=http://www.openboard.ch -+RunInWindow=false - SoftwareUpdateURL=http://www.openboard.ch/update.json - StartMode= - SwapControlAndDisplayScreens=false -diff -ruN OpenBoard-1.6.0a3-original/src/core/UBApplication.cpp OpenBoard-1.6.0a3/src/core/UBApplication.cpp ---- OpenBoard-1.6.0a3-original/src/core/UBApplication.cpp 2020-05-22 18:40:49.000000000 +0200 -+++ OpenBoard-1.6.0a3/src/core/UBApplication.cpp 2020-10-24 11:03:09.881941449 +0200 -@@ -277,8 +277,21 @@ - gs->setAttribute(QWebSettings::JavascriptCanAccessClipboard, true); - gs->setAttribute(QWebSettings::DnsPrefetchEnabled, true); - -+ /* RunInWindow patch */ -+ if (UBSettings::settings()->appRunInWindow->get().toBool()) { -+ mainWindow = new UBMainWindow(0, -+ Qt::Window | -+ Qt::WindowCloseButtonHint | -+ Qt::WindowMinimizeButtonHint | -+ Qt::WindowMaximizeButtonHint | -+ Qt::WindowShadeButtonHint -+ ); // deleted by application destructor -+ } else { -+ mainWindow = new UBMainWindow(0, Qt::FramelessWindowHint); // deleted by application destructor -+ } -+ /* mainWindow = new UBMainWindow(0, Qt::FramelessWindowHint); // deleted by application destructor */ -+ /* end patch */ - -- mainWindow = new UBMainWindow(0, Qt::FramelessWindowHint); // deleted by application destructor - mainWindow->setAttribute(Qt::WA_NativeWindow, true); - - mainWindow->actionCopy->setShortcuts(QKeySequence::Copy); -diff -ruN OpenBoard-1.6.0a3-original/src/core/UBSettings.cpp OpenBoard-1.6.0a3/src/core/UBSettings.cpp ---- OpenBoard-1.6.0a3-original/src/core/UBSettings.cpp 2020-05-22 18:40:49.000000000 +0200 -+++ OpenBoard-1.6.0a3/src/core/UBSettings.cpp 2020-10-24 11:02:43.074387051 +0200 -@@ -265,6 +265,9 @@ - appLookForOpenSankoreInstall = new UBSetting(this, "App", "LookForOpenSankoreInstall", true); - - appStartMode = new UBSetting(this, "App", "StartMode", ""); -+ /* RunInWindow patch */ -+ appRunInWindow = new UBSetting(this, "App", "RunInWindow", false); -+ /* end patch */ - - featureSliderPosition = new UBSetting(this, "Board", "FeatureSliderPosition", 40); - -diff -ruN OpenBoard-1.6.0a3-original/src/core/UBSettings.h OpenBoard-1.6.0a3/src/core/UBSettings.h ---- OpenBoard-1.6.0a3-original/src/core/UBSettings.h 2020-05-22 18:40:49.000000000 +0200 -+++ OpenBoard-1.6.0a3/src/core/UBSettings.h 2020-10-24 11:06:13.206894166 +0200 -@@ -260,7 +260,9 @@ - UBSetting* appHideSwapDisplayScreens; - UBSetting* appToolBarOrientationVertical; - UBSetting* appPreferredLanguage; -- -+ /* RunInWindow patch */ -+ UBSetting* appRunInWindow; -+ /* end patch */ - UBSetting* appIsInSoftwareUpdateProcess; - - UBSetting* appLastSessionDocumentUUID; -diff -ruN OpenBoard-1.6.0a3-original/src/frameworks/UBPlatformUtils_linux.cpp OpenBoard-1.6.0a3/src/frameworks/UBPlatformUtils_linux.cpp ---- OpenBoard-1.6.0a3-original/src/frameworks/UBPlatformUtils_linux.cpp 2020-05-22 18:40:49.000000000 +0200 -+++ OpenBoard-1.6.0a3/src/frameworks/UBPlatformUtils_linux.cpp 2020-10-24 11:00:43.708371185 +0200 -@@ -36,7 +36,9 @@ - #include - - #include "frameworks/UBFileSystemUtils.h" -- -+/* RunInWindow patch */ -+#include "core/UBSettings.h" -+/* end patch */ - - void UBPlatformUtils::init() - { -@@ -439,7 +441,14 @@ - - void UBPlatformUtils::showFullScreen(QWidget *pWidget) - { -- pWidget->showFullScreen(); -+ /* RunInWindow patch */ -+ /* pWidget->showFullScreen(); */ -+ if (UBSettings::settings()->appRunInWindow->get().toBool()) { -+ pWidget->showNormal(); -+ } else { -+ pWidget->showFullScreen(); -+ } -+ /* end patch */ - } - - void UBPlatformUtils::showOSK(bool show) -diff -ruN OpenBoard-1.6.0a3-original/src/frameworks/UBPlatformUtils_win.cpp OpenBoard-1.6.0a3/src/frameworks/UBPlatformUtils_win.cpp ---- OpenBoard-1.6.0a3-original/src/frameworks/UBPlatformUtils_win.cpp 2020-05-22 18:40:49.000000000 +0200 -+++ OpenBoard-1.6.0a3/src/frameworks/UBPlatformUtils_win.cpp 2020-10-24 11:01:26.170665369 +0200 -@@ -36,6 +36,9 @@ - - #include "frameworks/UBFileSystemUtils.h" - #include "core/memcheck.h" -+/* RunInWindow patch */ -+#include "core/UBSettings.h" -+/* end patch */ - - void UBPlatformUtils::init() - { -@@ -436,7 +439,14 @@ - - void UBPlatformUtils::showFullScreen(QWidget *pWidget) - { -- pWidget->showFullScreen(); -+ /* RunInWindow patch */ -+ /* pWidget->showFullScreen(); */ -+ if (UBSettings::settings()->appRunInWindow->get().toBool()) { -+ pWidget->showNormal(); -+ } else { -+ pWidget->showFullScreen(); -+ } -+ /* end patch */ - } - - void UBPlatformUtils::showOSK(bool show) -- cgit v1.2.3-65-gdbad