Increase kjs requirement for using the timeout check

Unfortunately with the new timeout code but older than 5.72 will crash on appAlert

So increase the requirement to > 5.71
remotes/origin/release/20.04
Albert Astals Cid 6 years ago
parent 3311bcb949
commit 795c7cb01f
  1. 10
      CMakeLists.txt
  2. 3
      config-okular.h.cmake
  3. 7
      core/script/executor_kjs.cpp
  4. 5
      core/script/kjs_app.cpp

@ -343,16 +343,6 @@ if (KF5JS_FOUND)
core/script/kjs_ocg.cpp
)
target_link_libraries(okularcore PRIVATE KF5::JS KF5::JSApi)
set(CMAKE_REQUIRED_LIBRARIES KF5::JSApi)
check_cxx_source_compiles("
#include <kjs/kjsinterpreter.h>
int main()
{
KJSInterpreter *ip = 0;
ip->setTimeoutTime(0);
return 0;
}
" HAVE_KJS_TIMEOUT)
endif()
set_target_properties(okularcore PROPERTIES VERSION 9.0.0 SOVERSION 9 OUTPUT_NAME Okular5Core EXPORT_NAME Core)

@ -6,6 +6,3 @@
/* Defines whether the malloc_trim method from malloc.h is available */
#cmakedefine01 HAVE_MALLOC_TRIM
/* Defines if we have timeout support in the KJS library */
#cmakedefine HAVE_KJS_TIMEOUT 1

@ -10,6 +10,7 @@
#include "executor_kjs_p.h"
#include <kjs_version.h>
#include <kjs/kjsinterpreter.h>
#include <kjs/kjsobject.h>
#include <kjs/kjsprototype.h>
@ -61,7 +62,7 @@ void ExecutorKJSPrivate::initTypes()
m_docObject = JSDocument::wrapDocument( m_doc );
m_interpreter = new KJSInterpreter( m_docObject );
#ifdef HAVE_KJS_TIMEOUT
#if KJS_VERSION > QT_VERSION_CHECK(5, 71, 0)
m_interpreter->setTimeoutTime( 2000 ); // max 2 secs allowed
#endif
KJSContext *ctx = m_interpreter->globalContext();
@ -117,12 +118,12 @@ void ExecutorKJS::execute( const QString &script, Event *event )
d->m_docObject.setProperty( ctx, QStringLiteral("event"), event ? JSEvent::wrapEvent( ctx, event ) : KJSUndefined() );
#ifdef HAVE_KJS_TIMEOUT
#if KJS_VERSION > QT_VERSION_CHECK(5, 71, 0)
d->m_interpreter->startTimeoutCheck();
#endif
KJSResult result = d->m_interpreter->evaluate( QStringLiteral("okular.js"), 1,
script, &d->m_docObject );
#ifdef HAVE_KJS_TIMEOUT
#if KJS_VERSION > QT_VERSION_CHECK(5, 71, 0)
d->m_interpreter->stopTimeoutCheck();
#endif

@ -10,6 +10,7 @@
#include "kjs_app_p.h"
#include <kjs_version.h>
#include <kjs/kjsarguments.h>
#include <kjs/kjsinterpreter.h>
#include <kjs/kjsobject.h>
@ -239,14 +240,14 @@ static KJSObject appAlert( KJSContext *context, void *,
}
#ifdef HAVE_KJS_TIMEOUT
#if KJS_VERSION > QT_VERSION_CHECK(5, 71, 0)
// halt timeout until the user has responded
context->interpreter().stopTimeoutCheck();
#endif
int button = box.exec();
#ifdef HAVE_KJS_TIMEOUT
#if KJS_VERSION > QT_VERSION_CHECK(5, 71, 0)
// restart max allowed time
context->interpreter().startTimeoutCheck();
#endif

Loading…
Cancel
Save