Merge branch 'master' of https://github.com/Almamu/linux-wallpaperengine into data-separation

# Conflicts:
#	main.cpp

Signed-off-by: Alexis Maiquez <almamu@almamu.com>
This commit is contained in:
Alexis Maiquez 2019-09-06 14:41:41 +02:00
commit a40a83006e
2 changed files with 31 additions and 13 deletions

View File

@ -78,6 +78,12 @@ Only screens configured with the XRandr extension are supported. To specify the
**IMPORTANT: Right now this doesn't work if there is anything drawing to the background (like a compositor, nautilus, etc)**
#### 5.4.4. Limiting FPS
To reduce the performance hit to your system you can reduce (or increase) the FPS limit with the switch ```--fps```, specially useful for laptops:
```
./wallengine --fps 30
```
###### Example background
This was the first background to even be compatible with the software. And It's not 100% compatible yet. Both textures and shaders are properly loaded, but there are still particles missing.

View File

@ -159,7 +159,8 @@ void print_help (const char* route)
<< " --silent\t\tMutes all the sound the wallpaper might produce" << std::endl
<< " --dir <folder>\tLoads an uncompressed background from the given <folder>" << std::endl
<< " --pkg <folder>\tLoads a scene.pkg file from the given <folder>" << std::endl
<< " --screen-root <screen name>\tDisplay as screen's background" << std::endl;
<< " --screen-root <screen name>\tDisplay as screen's background" << std::endl
<< " --fps <maximum-fps>\tLimits the FPS to the given number, useful to keep battery consumption low" << std::endl;
}
std::string stringPathFixes(const std::string& s){
@ -178,6 +179,7 @@ std::string stringPathFixes(const std::string& s){
int main (int argc, char* argv[])
{
int mode = 0;
int max_fps = 30;
bool audio_support = true;
std::string path;
@ -187,14 +189,15 @@ int main (int argc, char* argv[])
{"screen-root", required_argument, 0, 'r'},
{"pkg", required_argument, 0, 'p'},
{"dir", required_argument, 0, 'd'},
{"silent", optional_argument, 0, 's'},
{"help", optional_argument, 0, 'h'},
{nullptr, 0, 0, 0}
{"silent", no_argument, 0, 's'},
{"help", no_argument, 0, 'h'},
{"fps", required_argument, 0, 'f'},
{nullptr, 0, 0, 0}
};
while (true)
{
int c = getopt_long (argc, argv, "r:p:d:sh", long_options, &option_index);
int c = getopt_long (argc, argv, "r:p:d:shf:", long_options, &option_index);
if (c == -1)
break;
@ -224,6 +227,10 @@ int main (int argc, char* argv[])
print_help (argv [0]);
return 0;
case 'f':
max_fps = atoi (optarg);
break;
default:
break;
}
@ -302,18 +309,21 @@ int main (int argc, char* argv[])
// register nodes
WallpaperEngine::video::renderer::queueNode (wp_project->getScene ());
int32_t lastTime = 0;
int32_t minimumTime = 1000 / 90;
int32_t currentTime = 0;
irr::u32 lastTime = 0;
irr::u32 minimumTime = 1000 / max_fps;
irr::u32 currentTime = 0;
irr::u32 startTime = 0;
irr::u32 endTime = 0;
while (IrrlichtContext->getDevice ()->run () && IrrlichtContext && IrrlichtContext->getDevice ())
{
// if (device->isWindowActive ())
{
currentTime = IrrlichtContext->getDevice ()->getTimer ()->getTime ();
currentTime = startTime = IrrlichtContext->getDevice ()->getTimer ()->getTime ();
g_Time = currentTime / 1000.0f;
if (currentTime - lastTime > minimumTime)
if (Viewports.size () > 0)
{
std::vector<irr::core::rect<irr::s32>>::iterator cur = Viewports.begin ();
std::vector<irr::core::rect<irr::s32>>::iterator end = Viewports.end ();
@ -324,13 +334,15 @@ int main (int argc, char* argv[])
IrrlichtContext->getDevice ()->getVideoDriver ()->setViewPort (*cur);
WallpaperEngine::video::renderer::render ();
}
lastTime = currentTime;
}
else
{
IrrlichtContext->getDevice ()->sleep (1, false);
WallpaperEngine::video::renderer::render ();
}
endTime = IrrlichtContext->getDevice ()->getTimer ()->getTime ();
IrrlichtContext->getDevice ()->sleep (minimumTime - (endTime - startTime), false);
}
}