Skip to content

Commit

Permalink
dev-games/openscenegraph-openmw: new version 3.6_p20210610
Browse files Browse the repository at this point in the history
Based on openscenegraph-3.6.5-r110

Also apply egl patch from gentoo#21742

Bug: https://bugs.gentoo.org/797403
Package-Manager: Portage-3.0.20, Repoman-3.0.2
Signed-off-by: Alexey Sokolov <[email protected]>
Signed-off-by: Ionen Wolkens <[email protected]>
  • Loading branch information
DarthGandalf authored and ionenwks committed Jul 31, 2021
1 parent 6d9fec7 commit 4087e26
Show file tree
Hide file tree
Showing 6 changed files with 463 additions and 0 deletions.
1 change: 1 addition & 0 deletions dev-games/openscenegraph-openmw/Manifest
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
DIST openscenegraph-openmw-3.4_p20200425.tar.gz 5698786 BLAKE2B 43684fa898912434dae9a7b41070a893c407dceba7e468a3f3dede32e24aea55d921098faf8d9d05708d2ef01a3507b2f126939dc13b8693002a0bec189bbaf7 SHA512 9bb4d2a6ca4694ee22a29508b74a095a483584ea801dc8298ec8a9b41c4d4fe18c52a21849ae9ec1065060479dcad5156227f82feed13c177415662ecba1da70
DIST openscenegraph-openmw-3.6_p20210610.tar.gz 5788655 BLAKE2B fdf345502ee7bb742741da758ae212028882544766a6acba3309d27e2fffa230e4a07626c9a39dbdf1310374b765b3941c915d7b6d527fc7cb75ba028230b4a0 SHA512 1964b12fedf297b8baf77d4db2eb4ce6732925bb3974fb4d8d20b1dec751400ceb57faf0b069c2a5cf45728cad83ea434356edbcb19413d650717c3d2ac39a03
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
--- a/CMakeModules/OsgMacroUtils.cmake
+++ b/CMakeModules/OsgMacroUtils.cmake
@@ -463,7 +463,7 @@ MACRO(SETUP_EXAMPLE EXAMPLE_NAME)
IF(APPLE)
INSTALL(TARGETS ${TARGET_TARGETNAME} RUNTIME DESTINATION share/OpenSceneGraph/bin BUNDLE DESTINATION share/OpenSceneGraph/bin )
ELSE(APPLE)
- INSTALL(TARGETS ${TARGET_TARGETNAME} RUNTIME DESTINATION share/OpenSceneGraph/bin COMPONENT openscenegraph-examples )
+ INSTALL(TARGETS ${TARGET_TARGETNAME} RUNTIME DESTINATION bin COMPONENT openscenegraph-examples )
IF(MSVC)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_TARGETNAME}${CMAKE_RELWITHDEBINFO_POSTFIX}.pdb DESTINATION share/OpenSceneGraph/bin COMPONENT openscenegraph-examples CONFIGURATIONS RelWithDebInfo)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_TARGETNAME}${CMAKE_DEBUG_POSTFIX}.pdb DESTINATION share/OpenSceneGraph/bin COMPONENT openscenegraph-examples CONFIGURATIONS Debug)

Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -771,10 +771,7 @@
FIND_PACKAGE(LIBLAS)

IF (NOT(OSG_USE_LOCAL_LUA_SOURCE))
- FIND_PACKAGE(Lua52)
- IF (NOT (LUA_LIBRARIES AND LUA_INCLUDE_DIR))
- FIND_PACKAGE(Lua51)
- ENDIF()
+ FIND_PACKAGE(Lua ${LUA_VERSION} EXACT)
ENDIF()

# V8 and Python plugins are tests for linking against these libraries but aren't functionality beyond this.
Original file line number Diff line number Diff line change
@@ -0,0 +1,263 @@
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -764,7 +764,7 @@
FIND_PACKAGE(DirectInput)
FIND_PACKAGE(NVTT)
IF (NOT WIN32)
- FIND_PACKAGE(Asio)
+ FIND_PACKAGE(Boost)
ENDIF()
FIND_PACKAGE(ZeroConf)

--- a/CMakeModules/FindAsio.cmake
+++ b/CMakeModules/FindAsio.cmake
@@ -1,22 +0,0 @@
-# Locate ASIO-headers (http://think-async.com/Asio)
-# This module defines
-# ASIO_FOUND, if false, do not try to link to gdal
-# ASIO_INCLUDE_DIR, where to find the headers
-#
-# Created by Stephan Maximilian Huber
-
-FIND_PATH(ASIO_INCLUDE_DIR
- NAMES
- asio.hpp
- PATHS
- /usr/include
- /usr/local/include
-)
-
-SET(ASIO_FOUND "NO")
-IF(ASIO_INCLUDE_DIR)
- FIND_PACKAGE( Boost 1.37 )
- IF(Boost_FOUND)
- SET(ASIO_FOUND "YES")
- ENDIF()
-ENDIF()
--- a/src/osgPlugins/CMakeLists.txt
+++ b/src/osgPlugins/CMakeLists.txt
@@ -299,13 +299,13 @@
#
# Device integration plugins
#
-IF (SDL_FOUND)
+IF(SDL_FOUND)
ADD_PLUGIN_DIRECTORY(sdl)
-ENDIF(SDL_FOUND)
+ENDIF()

-IF(ASIO_FOUND)
+IF(Boost_FOUND)
ADD_PLUGIN_DIRECTORY(RestHttpDevice)
-ENDIF(ASIO_FOUND)
+ENDIF()


IF(ZEROCONF_FOUND)
--- a/src/osgPlugins/RestHttpDevice/CMakeLists.txt
+++ b/src/osgPlugins/RestHttpDevice/CMakeLists.txt
@@ -1,6 +1,5 @@
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
-INCLUDE_DIRECTORIES(${ASIO_INCLUDE_DIR})
-
+
SET(TARGET_SRC
connection.cpp
io_service_pool.cpp
@@ -26,7 +25,7 @@
RestHttpDevice.hpp
)

-SET(TARGET_ADDED_LIBRARIES osgPresentation )
+SET(TARGET_ADDED_LIBRARIES osgPresentation)

#### end var setup ###
SETUP_PLUGIN(resthttp)
--- a/src/osgPlugins/RestHttpDevice/connection.cpp
+++ b/src/osgPlugins/RestHttpDevice/connection.cpp
@@ -37,14 +37,14 @@
void connection::start()
{
OSG_DEBUG << "RestHttpDevice :: connection::start" << std::endl;
-
+
socket_.async_read_some(asio::buffer(buffer_),
boost::bind(&connection::handle_read, shared_from_this(),
asio::placeholders::error,
asio::placeholders::bytes_transferred));
}

-void connection::handle_read(const asio::error_code& e,
+void connection::handle_read(const boost::system::error_code& e,
std::size_t bytes_transferred)
{
if (!e)
@@ -82,12 +82,12 @@
// handler returns. The connection class's destructor closes the socket.
}

-void connection::handle_write(const asio::error_code& e)
+void connection::handle_write(const boost::system::error_code& e)
{
if (!e)
{
// Initiate graceful connection closure.
- asio::error_code ignored_ec;
+ boost::system::error_code ignored_ec;
socket_.shutdown(asio::ip::tcp::socket::shutdown_both, ignored_ec);
}

--- a/src/osgPlugins/RestHttpDevice/connection.hpp
+++ b/src/osgPlugins/RestHttpDevice/connection.hpp
@@ -11,7 +11,7 @@
#ifndef HTTP_SERVER_CONNECTION_HPP
#define HTTP_SERVER_CONNECTION_HPP

-#include <asio.hpp>
+#include <boost/asio.hpp>
#include <boost/array.hpp>
#include <boost/noncopyable.hpp>
#include <boost/shared_ptr.hpp>
@@ -21,6 +21,8 @@
#include "request_handler.hpp"
#include "request_parser.hpp"

+using namespace boost;
+
namespace http {
namespace server {

@@ -42,11 +44,11 @@
~connection();
private:
/// Handle completion of a read operation.
- void handle_read(const asio::error_code& e,
+ void handle_read(const boost::system::error_code& e,
std::size_t bytes_transferred);

/// Handle completion of a write operation.
- void handle_write(const asio::error_code& e);
+ void handle_write(const boost::system::error_code& e);

/// Socket for the connection.
asio::ip::tcp::socket socket_;
--- a/src/osgPlugins/RestHttpDevice/io_service_pool.cpp
+++ b/src/osgPlugins/RestHttpDevice/io_service_pool.cpp
@@ -11,7 +11,7 @@
#include "server.hpp"
#include <stdexcept>
#include <boost/bind.hpp>
-#include <boost/shared_ptr.hpp>
+#include <boost/thread.hpp>

namespace http {
namespace server {
@@ -36,17 +36,14 @@
void io_service_pool::run()
{
// Create a pool of threads to run all of the io_services.
- std::vector<boost::shared_ptr<asio::thread> > threads;
+ std::vector<thread> threads;
for (std::size_t i = 0; i < io_services_.size(); ++i)
- {
- boost::shared_ptr<asio::thread> thread(new asio::thread(
- boost::bind(&asio::io_service::run, io_services_[i])));
- threads.push_back(thread);
- }
+ threads.emplace_back(thread(boost::bind(&asio::io_service::run,
+ io_services_[i])));

// Wait for all threads in the pool to exit.
for (std::size_t i = 0; i < threads.size(); ++i)
- threads[i]->join();
+ threads[i].join();
}

void io_service_pool::stop()
--- a/src/osgPlugins/RestHttpDevice/io_service_pool.hpp
+++ b/src/osgPlugins/RestHttpDevice/io_service_pool.hpp
@@ -11,11 +11,13 @@
#ifndef HTTP_SERVER_IO_SERVICE_POOL_HPP
#define HTTP_SERVER_IO_SERVICE_POOL_HPP

-#include <asio.hpp>
+#include <boost/asio.hpp>
#include <vector>
#include <boost/noncopyable.hpp>
#include <boost/shared_ptr.hpp>

+using namespace boost;
+
namespace http {
namespace server {

--- a/src/osgPlugins/RestHttpDevice/reply.hpp
+++ b/src/osgPlugins/RestHttpDevice/reply.hpp
@@ -13,9 +13,11 @@

#include <string>
#include <vector>
-#include <asio.hpp>
+#include <boost/asio.hpp>
#include "header.hpp"

+using namespace boost;
+
namespace http {
namespace server {

--- a/src/osgPlugins/RestHttpDevice/server.cpp
+++ b/src/osgPlugins/RestHttpDevice/server.cpp
@@ -23,7 +23,7 @@
request_handler_(doc_root)
{
// Open the acceptor with the option to reuse the address (i.e. SO_REUSEADDR).
- asio::ip::tcp::resolver resolver(acceptor_.get_io_service());
+ asio::ip::tcp::resolver resolver(io_service_pool_.get_io_service());
asio::ip::tcp::resolver::query query(address, port);
asio::ip::tcp::endpoint endpoint = *resolver.resolve(query);
acceptor_.open(endpoint.protocol());
@@ -47,7 +47,7 @@
io_service_pool_.stop();
}

-void server::handle_accept(const asio::error_code& e)
+void server::handle_accept(const boost::system::error_code& e)
{
if (!e)
{
--- a/src/osgPlugins/RestHttpDevice/server.hpp
+++ b/src/osgPlugins/RestHttpDevice/server.hpp
@@ -11,7 +11,7 @@
#ifndef HTTP_SERVER_SERVER_HPP
#define HTTP_SERVER_SERVER_HPP

-#include <asio.hpp>
+#include <boost/asio.hpp>
#include <string>
#include <vector>
#include <boost/noncopyable.hpp>
@@ -20,6 +20,8 @@
#include "io_service_pool.hpp"
#include "request_handler.hpp"

+using namespace boost;
+
namespace http {
namespace server {

@@ -38,12 +40,12 @@

/// Stop the server.
void stop();
-
+
void setCallback(request_handler::Callback* cb) { request_handler_.setCallback(cb); }

private:
/// Handle completion of an asynchronous accept operation.
- void handle_accept(const asio::error_code& e);
+ void handle_accept(const boost::system::error_code& e);

/// The pool of io_service objects used to perform asynchronous operations.
io_service_pool io_service_pool_;
6 changes: 6 additions & 0 deletions dev-games/openscenegraph-openmw/metadata.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,16 @@
<longdescription lang="en">
OpenSceneGraph on steroids. This fork was created to experiment with performance enhancements for OpenMW that are too controversial to be included in the general purpose OSG project - either for design reasons or backward compatibility reasons. OpenMW still works with "vanilla" OpenSceneGraph, but it is recommended to use the fork for better performance (around 10-15% on most devices). Note that the improvements are very specific to OpenMW and its animation code in particular; other OpenSceneGraph applications are not likely to see the same speed-up, or any speed-up at all if they are already GPU limited.
</longdescription>
<upstream>
<remote-id type="github">OpenMW/osg</remote-id>
</upstream>
<use>
<flag name="collada">Enable DAE file support via <pkg>dev-libs/collada-dom</pkg></flag>
<flag name="dicom">Enable DICOM medical image file support via <pkg>sci-libs/dcmtk</pkg></flag>
<flag name="egl">Enable EGL support</flag>
<flag name="fox">Build examples using <pkg>x11-libs/fox</pkg> library</flag>
<flag name="gdal">Enable support for <pkg>sci-libs/gdal</pkg> library</flag>
<flag name="las">Enable support for geospatial data LAS LiDAR format using <pkg>sci-geosciences/liblas</pkg></flag>
<flag name="openinventor">Build OpenInventor plugin</flag>
<flag name="osgapps">Build osg applications</flag>
<flag name="sdl2">Use <pkg>media-libs/libsdl2</pkg> additionally to <pkg>media-libs/libsdl</pkg></flag>
Expand Down
Loading

0 comments on commit 4087e26

Please sign in to comment.