mirror of
https://github.com/yann64/haikuports.git
synced 2026-04-23 04:00:05 +02:00
Add rssavers recipe
* Created new haiku-misc category for miscellaneous Haiku stuff like screen savers (following gentoo's ports)
This commit is contained in:
619
haiku-misc/rssavers/patches/rssavers-0.2.patchset
Normal file
619
haiku-misc/rssavers/patches/rssavers-0.2.patchset
Normal file
@@ -0,0 +1,619 @@
|
||||
From ee9e2d290aed2d9206b911140662ec2aa2babd4f Mon Sep 17 00:00:00 2001
|
||||
From: Puck Meerburg <puck@puckipedia.nl>
|
||||
Date: Tue, 2 Dec 2014 15:06:43 +0000
|
||||
Subject: Fix Haiku compilation, add screen_blanker wrapper for screen savers
|
||||
|
||||
|
||||
diff --git a/include/rsHaikuScreenSaver/rsHaikuScreenSaver.h b/include/rsHaikuScreenSaver/rsHaikuScreenSaver.h
|
||||
new file mode 100644
|
||||
index 0000000..098b748
|
||||
--- /dev/null
|
||||
+++ b/include/rsHaikuScreenSaver/rsHaikuScreenSaver.h
|
||||
@@ -0,0 +1,71 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2006 Terence M. Welsh (rsXScreenSaver)
|
||||
+ * Modified by Puck Meerburg, (c) 2014
|
||||
+ *
|
||||
+ * This file is part of rsHaikuScreenSaver.
|
||||
+ *
|
||||
+ * rsHaikuScreenSaver is free software; you can redistribute it and/or
|
||||
+ * modify it under the terms of the GNU Lesser General Public
|
||||
+ * License as published by the Free Software Foundation; either
|
||||
+ * version 2.1 of the License, or (at your option) any later version.
|
||||
+ *
|
||||
+ * rsHaikuScreenSaver is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU Lesser General Public
|
||||
+ * License along with this program; if not, write to the Free Software
|
||||
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
+ */
|
||||
+
|
||||
+
|
||||
+/*
|
||||
+ * rsHaikuScreenSaver library, based on rsXScreenSaver
|
||||
+ *
|
||||
+ * Library for handling standard OpenGL screensaver functionality, such
|
||||
+ * as opening windows, choosing pixel formats, setting video modes,
|
||||
+ * handling user input, etc...
|
||||
+ */
|
||||
+
|
||||
+
|
||||
+
|
||||
+#ifndef RSHAIKUSCREENSAVER_H
|
||||
+#define RSHAIKUSCREENSAVER_H
|
||||
+
|
||||
+
|
||||
+#include <GL/gl.h>
|
||||
+#include <stdlib.h>
|
||||
+#include <util/rsTimer.h>
|
||||
+#include <pthread.h>
|
||||
+#include <util/arguments.h>
|
||||
+
|
||||
+
|
||||
+
|
||||
+extern int checkingPassword; // A saver should check this and stop drawing if true
|
||||
+extern int isSuspended; // power save mode
|
||||
+extern int doingPreview; // Previews take extra long to initialize because Windows
|
||||
+// has lots of screwy resource hogging problems. It's good to check this so that you
|
||||
+// can simplify your preview.
|
||||
+
|
||||
+// These variables can be useful information for saver programmer
|
||||
+extern int pfd_swap_exchange; // Is this bit set in the PIXELFORMATDESCRIPTOR?
|
||||
+extern int pfd_swap_copy; // Is this bit set in the PIXELFORMATDESCRIPTOR?
|
||||
+// used to limit frame rate of saver (0 = no limit)
|
||||
+extern unsigned int dFrameRateLimit;
|
||||
+// Keyboard toggle for displaying statistics, such as frames per second.
|
||||
+// User must implement the displaying of statistics if kStatistics is true.
|
||||
+extern int kStatistics;
|
||||
+
|
||||
+
|
||||
+
|
||||
+//----------------------------------------------------------------------------
|
||||
+
|
||||
+
|
||||
+// All idle processing is done here. Typically, you would just draw
|
||||
+// frames during this routine.
|
||||
+//void idleProc();
|
||||
+
|
||||
+
|
||||
+
|
||||
+#endif
|
||||
diff --git a/include/rsMath/rsMatrix.h b/include/rsMath/rsMatrix.h
|
||||
index 75d8cfc..08794b8 100644
|
||||
--- a/include/rsMath/rsMatrix.h
|
||||
+++ b/include/rsMath/rsMatrix.h
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
|
||||
|
||||
-#include <ostream>
|
||||
+#include <iostream>
|
||||
|
||||
|
||||
|
||||
diff --git a/include/util/arguments.h b/include/util/arguments.h
|
||||
index 7295a0c..899bebe 100644
|
||||
--- a/include/util/arguments.h
|
||||
+++ b/include/util/arguments.h
|
||||
@@ -33,7 +33,10 @@
|
||||
|
||||
// Handy template for converting std::string to numeric types.
|
||||
template <class T>
|
||||
-bool from_string(T& t, const std::string& str, std::ios_base& (*f)(std::ios_base&)){
|
||||
+bool from_string(
|
||||
+ T& t,
|
||||
+ const std::string& str,
|
||||
+ std::ios& (*f)(std::ios&)){
|
||||
std::istringstream iss(str);
|
||||
return !(iss >> f >> t).fail();
|
||||
}
|
||||
diff --git a/include/util/rsTimer.h b/include/util/rsTimer.h
|
||||
index 0eeed2d..0a9855d 100644
|
||||
--- a/include/util/rsTimer.h
|
||||
+++ b/include/util/rsTimer.h
|
||||
@@ -28,6 +28,7 @@
|
||||
#include <windows.h>
|
||||
#else
|
||||
#include <stdlib.h>
|
||||
+#include <unistd.h>
|
||||
#include <sys/time.h>
|
||||
#include <iostream>
|
||||
#endif
|
||||
diff --git a/src/Flocks/Flocks.cpp b/src/Flocks/Flocks.cpp
|
||||
index 12515fc..3eb5189 100644
|
||||
--- a/src/Flocks/Flocks.cpp
|
||||
+++ b/src/Flocks/Flocks.cpp
|
||||
@@ -32,6 +32,9 @@
|
||||
#ifdef RS_XSCREENSAVER
|
||||
#include <rsXScreenSaver/rsXScreenSaver.h>
|
||||
#endif
|
||||
+#ifdef RS_HAIKUSCREENSAVER
|
||||
+#include <rsHaikuScreenSaver/rsHaikuScreenSaver.h>
|
||||
+#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
@@ -417,7 +420,7 @@ void setDefaults(){
|
||||
}
|
||||
|
||||
|
||||
-#ifdef RS_XSCREENSAVER
|
||||
+#if defined(RS_XSCREENSAVER) || defined(RS_HAIKUSCREENSAVER)
|
||||
void handleCommandLine(int argc, char* argv[]){
|
||||
setDefaults();
|
||||
getArgumentsValue(argc, argv, std::string("-leaders"), dLeaders, 1, 100);
|
||||
@@ -468,7 +471,7 @@ void initSaver(HWND hwnd){
|
||||
|
||||
reshape(rect.right, rect.bottom);
|
||||
#endif
|
||||
-#ifdef RS_XSCREENSAVER
|
||||
+#if defined(RS_XSCREENSAVER) || defined(RS_HAIKUSCREENSAVER)
|
||||
void initSaver(){
|
||||
#endif
|
||||
int i;
|
||||
@@ -529,7 +532,7 @@ void initSaver(){
|
||||
}
|
||||
|
||||
|
||||
-#ifdef RS_XSCREENSAVER
|
||||
+#if defined(RS_XSCREENSAVER) | defined(RS_HAIKUSCREENSAVER)
|
||||
void cleanUp(){
|
||||
// Free memory
|
||||
delete[] lBugs;
|
||||
diff --git a/src/Flocks/Makefile b/src/Flocks/Makefile
|
||||
index c8e926e..b816e29 100644
|
||||
--- a/src/Flocks/Makefile
|
||||
+++ b/src/Flocks/Makefile
|
||||
@@ -1,6 +1,6 @@
|
||||
INCLUDE = -I../../include
|
||||
-LIBRARY = -lm -lGL -lGLU ../../lib/rsXScreenSaver.a ../../lib/Rgbhsl.a ../../lib/rsText.a
|
||||
-CFLAGS = -O3 -DRS_XSCREENSAVER $(INCLUDE)
|
||||
+LIBRARY = -shared -g -lGL -lGLU ../../lib/rsHaikuScreenSaver.a ../../lib/Rgbhsl.a ../../lib/rsText.a # -lm
|
||||
+CFLAGS = -O3 -g -DRS_HAIKUSCREENSAVER $(INCLUDE)
|
||||
|
||||
OBJECTS = Flocks.o
|
||||
|
||||
diff --git a/src/Flux/Flux.cpp b/src/Flux/Flux.cpp
|
||||
index 0bff6c1..f297801 100644
|
||||
--- a/src/Flux/Flux.cpp
|
||||
+++ b/src/Flux/Flux.cpp
|
||||
@@ -32,6 +32,9 @@
|
||||
#ifdef RS_XSCREENSAVER
|
||||
#include <rsXScreenSaver/rsXScreenSaver.h>
|
||||
#endif
|
||||
+#ifdef RS_HAIKUSCREENSAVER
|
||||
+#include <rsHaikuScreenSaver/rsHaikuScreenSaver.h>
|
||||
+#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <rsText/rsText.h>
|
||||
@@ -82,7 +85,7 @@ int dRotation;
|
||||
int dWind;
|
||||
int dInstability;
|
||||
int dBlur;
|
||||
-#ifdef RS_XSCREENSAVER
|
||||
+#if defined(RS_XSCREENSAVER) || defined(RS_HAIKUSCREENSAVER)
|
||||
#define DEFAULTS1 1
|
||||
#define DEFAULTS2 2
|
||||
#define DEFAULTS3 3
|
||||
@@ -606,7 +609,7 @@ void setDefaults(int which){
|
||||
}
|
||||
|
||||
|
||||
-#ifdef RS_XSCREENSAVER
|
||||
+#if defined(RS_XSCREENSAVER) || defined(RS_HAIKUSCREENSAVER)
|
||||
void handleCommandLine(int argc, char* argv[]){
|
||||
int defaults = DEFAULTS1;
|
||||
setDefaults(defaults);
|
||||
@@ -654,7 +657,7 @@ void initSaver(HWND hwnd){
|
||||
glLoadIdentity();
|
||||
gluPerspective(100.0, aspectRatio, 0.01, 200.0);
|
||||
#endif
|
||||
-#ifdef RS_XSCREENSAVER
|
||||
+#if defined(RS_XSCREENSAVER) || defined(RS_HAIKUSCREENSAVER)
|
||||
void initSaver(){
|
||||
#endif
|
||||
int i, j;
|
||||
@@ -749,7 +752,7 @@ void initSaver(){
|
||||
}
|
||||
|
||||
|
||||
-#ifdef RS_XSCREENSAVER
|
||||
+#if defined(RS_XSCREENSAVER) || defined(RS_HAIKUSCREENSAVER)
|
||||
void cleanUp(){
|
||||
// Free memory
|
||||
delete[] fluxes;
|
||||
diff --git a/src/Flux/Makefile b/src/Flux/Makefile
|
||||
index 903cfd4..0b14ab8 100644
|
||||
--- a/src/Flux/Makefile
|
||||
+++ b/src/Flux/Makefile
|
||||
@@ -1,6 +1,6 @@
|
||||
INCLUDE = -I../../include
|
||||
-LIBRARY = -L../../lib -lm -lGL -lGLU ../../lib/rsXScreenSaver.a ../../lib/Rgbhsl.a ../../lib/rsText.a
|
||||
-CFLAGS = -O3 -DRS_XSCREENSAVER $(INCLUDE)
|
||||
+LIBRARY = -L../../lib -shared -lGL -lGLU ../../lib/rsHaikuScreenSaver.a ../../lib/Rgbhsl.a ../../lib/rsText.a # -lm
|
||||
+CFLAGS = -O3 -DRS_HAIKUSCREENSAVER $(INCLUDE)
|
||||
|
||||
OBJECTS = Flux.o
|
||||
|
||||
diff --git a/src/Hyperspace/Hyperspace.cpp b/src/Hyperspace/Hyperspace.cpp
|
||||
index 490db7b..c9998d3 100644
|
||||
--- a/src/Hyperspace/Hyperspace.cpp
|
||||
+++ b/src/Hyperspace/Hyperspace.cpp
|
||||
@@ -35,6 +35,9 @@
|
||||
#ifdef RS_XSCREENSAVER
|
||||
#include <rsXScreenSaver/rsXScreenSaver.h>
|
||||
#endif
|
||||
+#ifdef RS_HAIKUSCREENSAVER
|
||||
+#include <rsHaikuScreenSaver/rsHaikuScreenSaver.h>
|
||||
+#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <rsText/rsText.h>
|
||||
@@ -446,7 +449,7 @@ void setDefaults(){
|
||||
}
|
||||
|
||||
|
||||
-#ifdef RS_XSCREENSAVER
|
||||
+#if defined(RS_XSCREENSAVER) || defined(RS_HAIKUSCREENSAVER)
|
||||
void handleCommandLine(int argc, char* argv[]){
|
||||
setDefaults();
|
||||
getArgumentsValue(argc, argv, std::string("-speed"), dSpeed, 1, 100);
|
||||
@@ -506,7 +509,7 @@ void initSaver(HWND hwnd){
|
||||
|
||||
reshape(rect.right, rect.bottom);
|
||||
#endif
|
||||
-#ifdef RS_XSCREENSAVER
|
||||
+#if defined(RS_XSCREENSAVER) || defined(RS_HAIKUSCREENSAVER)
|
||||
void initSaver(){
|
||||
#endif
|
||||
// Seed random number generator
|
||||
@@ -630,7 +633,7 @@ void initSaver(){
|
||||
}
|
||||
|
||||
|
||||
-#ifdef RS_XSCREENSAVER
|
||||
+#if defined(RS_XSCREENSAVER) || defined(RS_HAIKUSCREENSAVER)
|
||||
void cleanUp(){
|
||||
// Free memory
|
||||
if(dUseGoo)
|
||||
diff --git a/src/Hyperspace/Makefile b/src/Hyperspace/Makefile
|
||||
index 99f26cb..721b982 100644
|
||||
--- a/src/Hyperspace/Makefile
|
||||
+++ b/src/Hyperspace/Makefile
|
||||
@@ -1,6 +1,6 @@
|
||||
INCLUDE = -I. -I../../include
|
||||
-LIBRARY = -lm -lGL -lGLU ../../lib/rsXScreenSaver.a ../../lib/rsMath.a ../../lib/Implicit.a ../../lib/rsText.a ../../lib/Rgbhsl.a
|
||||
-CFLAGS = -O3 -DRS_XSCREENSAVER -DGL_GLEXT_PROTOTYPES $(INCLUDE)
|
||||
+LIBRARY = -shared -lGL -lGLU ../../lib/rsHaikuScreenSaver.a ../../lib/rsMath.a ../../lib/Implicit.a ../../lib/rsText.a ../../lib/Rgbhsl.a # -lm
|
||||
+CFLAGS = -O3 -DRS_HAIKUSCREENSAVER -DGL_GLEXT_PROTOTYPES $(INCLUDE)
|
||||
|
||||
OBJECTS = Hyperspace.o \
|
||||
causticTextures.o \
|
||||
diff --git a/src/Implicit/Makefile b/src/Implicit/Makefile
|
||||
index 8659f8b..3ce93f1 100644
|
||||
--- a/src/Implicit/Makefile
|
||||
+++ b/src/Implicit/Makefile
|
||||
@@ -1,5 +1,5 @@
|
||||
INCLUDE = -I../../include
|
||||
-COMPILE = gcc $(INCLUDE) -O3 -DGL_GLEXT_PROTOTYPES -msse -mfpmath=sse
|
||||
+COMPILE = gcc $(INCLUDE) -shared -O3 -DGL_GLEXT_PROTOTYPES # -msse -mfpmath=sse
|
||||
OBJECTS = impCubeTables.o \
|
||||
impCubeVolume.o \
|
||||
impSurface.o \
|
||||
diff --git a/src/Microcosm/Makefile b/src/Microcosm/Makefile
|
||||
index ddaade3..2262be1 100644
|
||||
--- a/src/Microcosm/Makefile
|
||||
+++ b/src/Microcosm/Makefile
|
||||
@@ -1,6 +1,6 @@
|
||||
INCLUDE = -I. -I../../include
|
||||
-LIBRARY = -lm -lGL -lGLU ../../lib/rsXScreenSaver.a ../../lib/rsMath.a ../../lib/Implicit.a ../../lib/Rgbhsl.a ../../lib/rsText.a -pthread
|
||||
-CFLAGS = -O3 -DRS_XSCREENSAVER -DGL_GLEXT_PROTOTYPES $(INCLUDE) -msse -mfpmath=sse
|
||||
+LIBRARY = -lGL -lGLU ../../lib/rsHaikuScreenSaver.a ../../lib/rsMath.a ../../lib/Implicit.a ../../lib/Rgbhsl.a ../../lib/rsText.a # -pthread -lm
|
||||
+CFLAGS = -O3 -shared -DRS_HAIKUSCREENSAVER -DGL_GLEXT_PROTOTYPES $(INCLUDE) # -msse -mfpmath=sse
|
||||
|
||||
OBJECTS = Microcosm.o \
|
||||
MirrorBox.o \
|
||||
diff --git a/src/Microcosm/Microcosm.cpp b/src/Microcosm/Microcosm.cpp
|
||||
index 3c6b2be..c05584e 100644
|
||||
--- a/src/Microcosm/Microcosm.cpp
|
||||
+++ b/src/Microcosm/Microcosm.cpp
|
||||
@@ -31,6 +31,9 @@
|
||||
#ifdef RS_XSCREENSAVER
|
||||
#include <rsXScreenSaver/rsXScreenSaver.h>
|
||||
#endif
|
||||
+#ifdef RS_HAIKUSCREENSAVER
|
||||
+#include <rsHaikuScreenSaver/rsHaikuScreenSaver.h>
|
||||
+#endif
|
||||
|
||||
//#include <iostream>
|
||||
#include <vector>
|
||||
@@ -869,7 +872,7 @@ void setDefaults(int which){
|
||||
}
|
||||
|
||||
|
||||
-#ifdef RS_XSCREENSAVER
|
||||
+#if defined(RS_XSCREENSAVER) || defined(RS_HAIKUSCREENSAVER)
|
||||
void handleCommandLine(int argc, char* argv[]){
|
||||
setDefaults(0);
|
||||
getArgumentsValue(argc, argv, std::string("-stime"), dSingleTime, 0, 300);
|
||||
@@ -921,7 +924,7 @@ void initSaver(HWND hwnd){
|
||||
|
||||
reshape(rect.right, rect.bottom);
|
||||
#endif
|
||||
-#ifdef RS_XSCREENSAVER
|
||||
+#if defined(RS_XSCREENSAVER) || defined(RS_HAIKUSCREENSAVER)
|
||||
void initSaver(){
|
||||
#endif
|
||||
srand((unsigned)time(NULL));
|
||||
@@ -1132,7 +1135,7 @@ void initSaver(){
|
||||
}
|
||||
|
||||
|
||||
-#ifdef RS_XSCREENSAVER
|
||||
+#if defined(RS_XSCREENSAVER) || defined(RS_HAIKUSCREENSAVER)
|
||||
void cleanUp(){
|
||||
// Free memory
|
||||
}
|
||||
diff --git a/src/Plasma/Makefile b/src/Plasma/Makefile
|
||||
index 697ece9..18e152c 100644
|
||||
--- a/src/Plasma/Makefile
|
||||
+++ b/src/Plasma/Makefile
|
||||
@@ -1,6 +1,6 @@
|
||||
INCLUDE = -I../../include
|
||||
-LIBRARY = -L../../lib -lm -lGL -lGLU ../../lib/rsXScreenSaver.a ../../lib/rsText.a
|
||||
-CFLAGS = -O3 -DRS_XSCREENSAVER $(INCLUDE)
|
||||
+LIBRARY = -shared -L../../lib -lGL -lGLU ../../lib/rsHaikuScreenSaver.a ../../lib/rsText.a
|
||||
+CFLAGS = -O3 -DRS_HAIKUSCREENSAVER $(INCLUDE)
|
||||
|
||||
OBJECTS = Plasma.o
|
||||
|
||||
diff --git a/src/Plasma/Plasma.cpp b/src/Plasma/Plasma.cpp
|
||||
index 82444e4..6011e6f 100644
|
||||
--- a/src/Plasma/Plasma.cpp
|
||||
+++ b/src/Plasma/Plasma.cpp
|
||||
@@ -33,6 +33,9 @@
|
||||
#ifdef RS_XSCREENSAVER
|
||||
#include <rsXScreenSaver/rsXScreenSaver.h>
|
||||
#endif
|
||||
+#ifdef RS_HAIKUSCREENSAVER
|
||||
+#include <rsHaikuScreenSaver/rsHaikuScreenSaver.h>
|
||||
+#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
@@ -263,7 +266,7 @@ void setDefaults(){
|
||||
}
|
||||
|
||||
|
||||
-#ifdef RS_XSCREENSAVER
|
||||
+#if defined(RS_XSCREENSAVER) || defined(RS_HAIKUSCREENSAVER)
|
||||
void handleCommandLine(int argc, char* argv[]){
|
||||
setDefaults();
|
||||
getArgumentsValue(argc, argv, std::string("-zoom"), dZoom, 1, 100);
|
||||
@@ -302,7 +305,7 @@ void initSaver(HWND hwnd){
|
||||
glLoadIdentity();
|
||||
gluOrtho2D(0.0f, 1.0f, 0.0f, 1.0f);
|
||||
#endif
|
||||
-#ifdef RS_XSCREENSAVER
|
||||
+#ifndef WIN32
|
||||
void initSaver(){
|
||||
#endif
|
||||
int i, j;
|
||||
@@ -339,7 +342,7 @@ void initSaver(){
|
||||
}
|
||||
|
||||
|
||||
-#ifdef RS_XSCREENSAVER
|
||||
+#if defined(RS_XSCREENSAVER) || defined(RS_HAIKUSCREENSAVER)
|
||||
void cleanUp(){
|
||||
;
|
||||
}
|
||||
diff --git a/src/rsHaikuScreenSaver/Makefile b/src/rsHaikuScreenSaver/Makefile
|
||||
new file mode 100644
|
||||
index 0000000..5853683
|
||||
--- /dev/null
|
||||
+++ b/src/rsHaikuScreenSaver/Makefile
|
||||
@@ -0,0 +1,17 @@
|
||||
+INCLUDE = -I../../include
|
||||
+COMPILE = gcc $(INCLUDE) -O3
|
||||
+OBJECTS = rsHaikuScreenSaver.o \
|
||||
+ ../util/arguments.o
|
||||
+
|
||||
+
|
||||
+all: $(OBJECTS)
|
||||
+ ar cr ../../lib/rsHaikuScreenSaver.a $(OBJECTS)
|
||||
+
|
||||
+clean:
|
||||
+ rm $(OBJECTS)
|
||||
+
|
||||
+
|
||||
+.SUFFIXES: .cpp .o
|
||||
+
|
||||
+.cpp.o:
|
||||
+ $(COMPILE) -o $@ -c $<
|
||||
diff --git a/src/rsHaikuScreenSaver/rsHaikuScreenSaver.cpp b/src/rsHaikuScreenSaver/rsHaikuScreenSaver.cpp
|
||||
new file mode 100644
|
||||
index 0000000..521bfe8
|
||||
--- /dev/null
|
||||
+++ b/src/rsHaikuScreenSaver/rsHaikuScreenSaver.cpp
|
||||
@@ -0,0 +1,173 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2014 Puck Meerburg.
|
||||
+ *
|
||||
+ * This file is part of rsHaikuScreenSaver.
|
||||
+ *
|
||||
+ * rsHaikuScreenSaver is free software; you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License as published
|
||||
+ * by the Free Software Foundation; either version 2 of the License,
|
||||
+ * or (at your option) any later version.
|
||||
+ *
|
||||
+ * rsHaikuScreenSaver is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU General Public License
|
||||
+ * along with this program; if not, write to the Free Software
|
||||
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
+ */
|
||||
+
|
||||
+#include <ScreenSaver.h>
|
||||
+#include <View.h>
|
||||
+#include <GLView.h>
|
||||
+#include <stdio.h>
|
||||
+
|
||||
+int checkingPassword = 0;
|
||||
+int isSuspended = 0;
|
||||
+int doingPreview = 0;
|
||||
+unsigned int dFrameRateLimit = 0;
|
||||
+int kStatistics = 0;
|
||||
+bool useRootWindow = false;
|
||||
+
|
||||
+bool quit = false;
|
||||
+
|
||||
+// Functions that must be implemented by screensaver
|
||||
+extern void handleCommandLine(int argc, char* argv[]);
|
||||
+extern void initSaver();
|
||||
+extern void cleanUp();
|
||||
+extern void idleProc();
|
||||
+extern void reshape(int, int);
|
||||
+
|
||||
+class ScreenSaverGLView : public BGLView {
|
||||
+ public:
|
||||
+ ScreenSaverGLView(BRect bounds);
|
||||
+ void FrameResized(float width, float height);
|
||||
+ void EnableDirectMode(bool enabled);
|
||||
+ void DrawSaver();
|
||||
+ private:
|
||||
+ bool mConnected;
|
||||
+ bool mFirst;
|
||||
+};
|
||||
+
|
||||
+ScreenSaverGLView::ScreenSaverGLView(BRect bounds) :
|
||||
+ BGLView(bounds, (const char *)NULL, B_FOLLOW_ALL,
|
||||
+ B_FRAME_EVENTS | B_WILL_DRAW,
|
||||
+ BGL_RGB | BGL_ALPHA | BGL_DEPTH | BGL_DOUBLE) {
|
||||
+ mFirst = true;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+void
|
||||
+ScreenSaverGLView::DrawSaver()
|
||||
+{
|
||||
+ if (mConnected) {
|
||||
+ LockGL();
|
||||
+ if (mFirst) {
|
||||
+ char *stuff[2] = { "saver", 0 };
|
||||
+ handleCommandLine(1, stuff);
|
||||
+ initSaver();
|
||||
+ reshape((int)Bounds().Width(), (int)Bounds().Height());
|
||||
+ mFirst = false;
|
||||
+ }
|
||||
+ idleProc();
|
||||
+ SwapBuffers();
|
||||
+ UnlockGL();
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+
|
||||
+void
|
||||
+ScreenSaverGLView::EnableDirectMode(bool enabled)
|
||||
+{
|
||||
+ BGLView::EnableDirectMode(enabled);
|
||||
+ mConnected = enabled;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+void
|
||||
+ScreenSaverGLView::FrameResized(float width, float height)
|
||||
+{
|
||||
+ if (mConnected) {
|
||||
+ LockGL();
|
||||
+ reshape((int)width, (int)height);
|
||||
+ UnlockGL();
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+class rsHaikuScreenSaver : public BScreenSaver
|
||||
+{
|
||||
+ public:
|
||||
+ rsHaikuScreenSaver(BMessage *archive, image_id);
|
||||
+ void DirectConnected(direct_buffer_info* info);
|
||||
+ void Draw(BView *, int32 frame);
|
||||
+ void StopSaver();
|
||||
+ void StartConfig(BView *view);
|
||||
+ status_t StartSaver(BView *view, bool preview);
|
||||
+
|
||||
+ private:
|
||||
+ ScreenSaverGLView *fSaverView;
|
||||
+};
|
||||
+
|
||||
+
|
||||
+BScreenSaver* instantiate_screen_saver(BMessage *msg, image_id image)
|
||||
+{
|
||||
+ return new rsHaikuScreenSaver(msg, image);
|
||||
+}
|
||||
+
|
||||
+
|
||||
+rsHaikuScreenSaver::rsHaikuScreenSaver(BMessage *archive, image_id id)
|
||||
+ :
|
||||
+ BScreenSaver(archive, id)
|
||||
+{
|
||||
+}
|
||||
+
|
||||
+
|
||||
+void
|
||||
+rsHaikuScreenSaver::StartConfig(BView *view)
|
||||
+{
|
||||
+}
|
||||
+
|
||||
+
|
||||
+status_t
|
||||
+rsHaikuScreenSaver::StartSaver(BView *view, bool preview)
|
||||
+{
|
||||
+ float viewWidth = view->Bounds().Width();
|
||||
+ float viewHeight = view->Bounds().Height();
|
||||
+
|
||||
+ fSaverView = new ScreenSaverGLView(BRect(0, 0, viewWidth, viewHeight));
|
||||
+
|
||||
+ view->AddChild(fSaverView);
|
||||
+
|
||||
+ // Set tick size to 50,000 microseconds = 0.05 seconds
|
||||
+ SetTickSize(50000);
|
||||
+
|
||||
+ return B_OK;
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+rsHaikuScreenSaver::Draw(BView *, int32 frame)
|
||||
+{
|
||||
+ fSaverView->DrawSaver();
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+rsHaikuScreenSaver::DirectConnected(direct_buffer_info* info)
|
||||
+{
|
||||
+ if (fSaverView) {
|
||||
+ fSaverView->DirectConnected(info);
|
||||
+ fSaverView->EnableDirectMode(true);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+rsHaikuScreenSaver::StopSaver()
|
||||
+{
|
||||
+ if (fSaverView)
|
||||
+ fSaverView->EnableDirectMode(false);
|
||||
+
|
||||
+ fSaverView->LockGL();
|
||||
+ cleanUp();
|
||||
+ fSaverView->UnlockGL();
|
||||
+}
|
||||
+
|
||||
--
|
||||
1.8.3.4
|
||||
|
||||
74
haiku-misc/rssavers/rssavers-0.2.recipe
Normal file
74
haiku-misc/rssavers/rssavers-0.2.recipe
Normal file
@@ -0,0 +1,74 @@
|
||||
SUMMARY="Really Slick Screen Savers"
|
||||
DESCRIPTION="The Really Slick Screen Savers are a set of, as the name implies,\
|
||||
really slick screen savers! Originally made for Windows, these have been ported\
|
||||
to Linux and Haiku too!"
|
||||
HOMEPAGE="http://reallyslick.com/screensavers/"
|
||||
SRC_URI="http://downloads.sourceforge.net/rssavers/rssavers-0.2.src.tar.gz"
|
||||
CHECKSUM_SHA256="be58390ea092ffe4ccecf827b04f5e99a1be5be12eaf5266a415fadb01ea4f24"
|
||||
PATCHES="rssavers-0.2.patchset"
|
||||
REVISION="1"
|
||||
COPYRIGHT="1999-2010 Terence M. Welsh\
|
||||
2014 Puck Meerburg (Haiku part)"
|
||||
LICENSE="GNU GPL v2"
|
||||
ARCHITECTURES="x86_gcc2 x86 x86_64"
|
||||
PROVIDES="
|
||||
rssavers = $portVersion
|
||||
addon:Flocks = $portVersion
|
||||
addon:Flux = $portVersion
|
||||
addon:Hyperspace = $portVersion
|
||||
addon:Microcosm = $portVersion
|
||||
addon:Plasma = $portVersion
|
||||
"
|
||||
REQUIRES="
|
||||
haiku >= $haikuVersion
|
||||
lib:libgl
|
||||
lib:libglu
|
||||
"
|
||||
BUILD_PREREQUIRES="
|
||||
cmd:gcc
|
||||
cmd:make
|
||||
devel:libgl
|
||||
devel:libglu
|
||||
"
|
||||
BUILD_REQUIRES="
|
||||
haiku_devel >= $haikuVersion
|
||||
"
|
||||
|
||||
BUILD()
|
||||
{
|
||||
cd src
|
||||
cd rsHaikuScreenSaver
|
||||
make
|
||||
cd ../rsMath
|
||||
make
|
||||
cd ../rsText
|
||||
make
|
||||
cd ../Rgbhsl
|
||||
make
|
||||
cd ../Implicit
|
||||
make
|
||||
|
||||
cd ../Flocks
|
||||
make
|
||||
|
||||
cd ../Flux
|
||||
make
|
||||
|
||||
#cd ../Hyperspace # For some reason this won't run
|
||||
#make
|
||||
|
||||
cd ../Microcosm
|
||||
make
|
||||
|
||||
cd ../Plasma
|
||||
make
|
||||
|
||||
cd ..
|
||||
}
|
||||
|
||||
INSTALL()
|
||||
{
|
||||
mkdir -p $addOnsDir/Screen\ Savers
|
||||
cd bin
|
||||
cp flocks flux microcosm plasma $addOnsDir/Screen\ Savers
|
||||
}
|
||||
Reference in New Issue
Block a user