mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 10:22:45 -04:00
Merge branch 'cmake' of https://github.com/panda3d/panda3d into cmake
This commit is contained in:
commit
8b51b0faeb
@ -61,7 +61,7 @@ script:
|
||||
- cmake -DHAVE_GTK2=NO -DBUILD_METALIBS=$BUILD_METALIBS -DCOMPOSITE_SOURCE_LIMIT=$COMPOSITE_SOURCE_LIMIT ..
|
||||
- make -j4
|
||||
|
||||
after_script:
|
||||
- export PYTHONPATH=$PWD
|
||||
- python ../test_imports.py
|
||||
- pytest ../tests
|
||||
|
||||
|
@ -237,76 +237,74 @@ endfunction(interrogate_sources)
|
||||
# Python module when it's initialized.
|
||||
#
|
||||
function(add_python_module module)
|
||||
if(INTERROGATE_PYTHON_INTERFACE)
|
||||
set(targets)
|
||||
set(link_targets)
|
||||
set(import_flags)
|
||||
set(infiles)
|
||||
set(sources)
|
||||
|
||||
set(link_keyword OFF)
|
||||
set(import_keyword OFF)
|
||||
foreach(arg ${ARGN})
|
||||
if(arg STREQUAL "LINK")
|
||||
set(link_keyword ON)
|
||||
set(import_keyword OFF)
|
||||
elseif(arg STREQUAL "IMPORT")
|
||||
set(link_keyword OFF)
|
||||
set(import_keyword ON)
|
||||
elseif(link_keyword)
|
||||
list(APPEND link_targets "${arg}")
|
||||
elseif(import_keyword)
|
||||
list(APPEND import_flags "-import" "${arg}")
|
||||
else()
|
||||
list(APPEND targets "${arg}")
|
||||
endif()
|
||||
endforeach(arg)
|
||||
|
||||
if(NOT link_targets)
|
||||
set(link_targets ${targets})
|
||||
endif()
|
||||
|
||||
foreach(target ${targets})
|
||||
interrogate_sources(${target} "${target}_igate.cxx" "${target}.in"
|
||||
"-python-native;-module;panda3d.${module}")
|
||||
get_target_property(target_extensions "${target}" IGATE_EXTENSIONS)
|
||||
list(APPEND infiles "${target}.in")
|
||||
list(APPEND sources "${target}_igate.cxx" ${target_extensions})
|
||||
endforeach(target)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${module}_module.cxx"
|
||||
COMMAND interrogate_module
|
||||
-oc "${CMAKE_CURRENT_BINARY_DIR}/${module}_module.cxx"
|
||||
-module ${module} -library ${module}
|
||||
${import_flags}
|
||||
${INTERROGATE_MODULE_OPTIONS}
|
||||
${IMOD_FLAGS} ${infiles}
|
||||
DEPENDS interrogate_module ${infiles}
|
||||
COMMENT "Generating module ${module}"
|
||||
)
|
||||
|
||||
if(BUILD_SHARED_LIBS)
|
||||
add_library(${module} MODULE "${module}_module.cxx" ${sources})
|
||||
else()
|
||||
add_library(${module} STATIC "${module}_module.cxx" ${sources})
|
||||
endif()
|
||||
target_link_libraries(${module}
|
||||
${link_targets} ${PYTHON_LIBRARIES} p3dtool)
|
||||
|
||||
set_target_properties(${module} PROPERTIES
|
||||
LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/panda3d"
|
||||
PREFIX ""
|
||||
)
|
||||
if(WIN32 AND NOT CYGWIN)
|
||||
set_target_properties(${module} PROPERTIES SUFFIX ".pyd")
|
||||
endif()
|
||||
|
||||
install(TARGETS ${module} DESTINATION "${PYTHON_ARCH_INSTALL_DIR}/panda3d")
|
||||
|
||||
list(APPEND ALL_INTERROGATE_MODULES "${module}")
|
||||
set(ALL_INTERROGATE_MODULES "${ALL_INTERROGATE_MODULES}" CACHE INTERNAL "Internal variable")
|
||||
if(NOT HAVE_PYTHON OR NOT INTERROGATE_PYTHON_INTERFACE)
|
||||
return()
|
||||
endif()
|
||||
|
||||
set(targets)
|
||||
set(link_targets)
|
||||
set(import_flags)
|
||||
set(infiles)
|
||||
set(sources)
|
||||
|
||||
set(link_keyword OFF)
|
||||
set(import_keyword OFF)
|
||||
foreach(arg ${ARGN})
|
||||
if(arg STREQUAL "LINK")
|
||||
set(link_keyword ON)
|
||||
set(import_keyword OFF)
|
||||
elseif(arg STREQUAL "IMPORT")
|
||||
set(link_keyword OFF)
|
||||
set(import_keyword ON)
|
||||
elseif(link_keyword)
|
||||
list(APPEND link_targets "${arg}")
|
||||
elseif(import_keyword)
|
||||
list(APPEND import_flags "-import" "${arg}")
|
||||
else()
|
||||
list(APPEND targets "${arg}")
|
||||
endif()
|
||||
endforeach(arg)
|
||||
|
||||
if(NOT link_targets)
|
||||
set(link_targets ${targets})
|
||||
endif()
|
||||
|
||||
foreach(target ${targets})
|
||||
interrogate_sources(${target} "${target}_igate.cxx" "${target}.in"
|
||||
"-python-native;-module;panda3d.${module}")
|
||||
get_target_property(target_extensions "${target}" IGATE_EXTENSIONS)
|
||||
list(APPEND infiles "${target}.in")
|
||||
list(APPEND sources "${target}_igate.cxx" ${target_extensions})
|
||||
endforeach(target)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${module}_module.cxx"
|
||||
COMMAND interrogate_module
|
||||
-oc "${CMAKE_CURRENT_BINARY_DIR}/${module}_module.cxx"
|
||||
-module ${module} -library ${module}
|
||||
${import_flags}
|
||||
${INTERROGATE_MODULE_OPTIONS}
|
||||
${IMOD_FLAGS} ${infiles}
|
||||
DEPENDS interrogate_module ${infiles}
|
||||
COMMENT "Generating module ${module}"
|
||||
)
|
||||
|
||||
add_library(${module} ${MODULE_TYPE} "${module}_module.cxx" ${sources})
|
||||
target_link_libraries(${module}
|
||||
${link_targets} ${PYTHON_LIBRARIES} p3dtool)
|
||||
|
||||
set_target_properties(${module} PROPERTIES
|
||||
LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/panda3d"
|
||||
PREFIX ""
|
||||
)
|
||||
if(WIN32 AND NOT CYGWIN)
|
||||
set_target_properties(${module} PROPERTIES SUFFIX ".pyd")
|
||||
endif()
|
||||
|
||||
install(TARGETS ${module} DESTINATION "${PYTHON_ARCH_INSTALL_DIR}/panda3d")
|
||||
|
||||
list(APPEND ALL_INTERROGATE_MODULES "${module}")
|
||||
set(ALL_INTERROGATE_MODULES "${ALL_INTERROGATE_MODULES}" CACHE INTERNAL "Internal variable")
|
||||
endfunction(add_python_module)
|
||||
|
||||
|
||||
|
@ -10,7 +10,7 @@ __all__ = ['indent',
|
||||
'bound', 'clamp', 'lerp', 'average', 'addListsByValue',
|
||||
'boolEqual', 'lineupPos', 'formatElapsedSeconds', 'solveQuadratic',
|
||||
'findPythonModule', 'mostDerivedLast',
|
||||
'weightedChoice', 'randFloat', 'normalDistrib',
|
||||
'clampScalar', 'weightedChoice', 'randFloat', 'normalDistrib',
|
||||
'weightedRand', 'randUint31', 'randInt32',
|
||||
'SerialNumGen', 'serialNum', 'uniqueName', 'Enum', 'Singleton',
|
||||
'SingletonError', 'printListEnum', 'safeRepr',
|
||||
@ -178,27 +178,6 @@ class Queue:
|
||||
def __len__(self):
|
||||
return len(self.__list)
|
||||
|
||||
if __debug__ and __name__ == '__main__':
|
||||
q = Queue()
|
||||
assert q.isEmpty()
|
||||
q.clear()
|
||||
assert q.isEmpty()
|
||||
q.push(10)
|
||||
assert not q.isEmpty()
|
||||
q.push(20)
|
||||
assert not q.isEmpty()
|
||||
assert len(q) == 2
|
||||
assert q.front() == 10
|
||||
assert q.back() == 20
|
||||
assert q.top() == 10
|
||||
assert q.top() == 10
|
||||
assert q.pop() == 10
|
||||
assert len(q) == 1
|
||||
assert not q.isEmpty()
|
||||
assert q.pop() == 20
|
||||
assert len(q) == 0
|
||||
assert q.isEmpty()
|
||||
|
||||
|
||||
def indent(stream, numIndents, str):
|
||||
"""
|
||||
@ -1130,6 +1109,23 @@ def findPythonModule(module):
|
||||
|
||||
return None
|
||||
|
||||
def clampScalar(value, a, b):
|
||||
# calling this ought to be faster than calling both min and max
|
||||
if a < b:
|
||||
if value < a:
|
||||
return a
|
||||
elif value > b:
|
||||
return b
|
||||
else:
|
||||
return value
|
||||
else:
|
||||
if value < b:
|
||||
return b
|
||||
elif value > a:
|
||||
return a
|
||||
else:
|
||||
return value
|
||||
|
||||
def weightedChoice(choiceList, rng=random.random, sum=None):
|
||||
"""given a list of (weight, item) pairs, chooses an item based on the
|
||||
weights. rng must return 0..1. if you happen to have the sum of the
|
||||
@ -2313,36 +2309,6 @@ def flywheel(*args, **kArgs):
|
||||
pass
|
||||
return flywheel
|
||||
|
||||
if __debug__ and __name__ == '__main__':
|
||||
f = flywheel(['a','b','c','d'], countList=[11,20,3,4])
|
||||
obj2count = {}
|
||||
for obj in f:
|
||||
obj2count.setdefault(obj, 0)
|
||||
obj2count[obj] += 1
|
||||
assert obj2count['a'] == 11
|
||||
assert obj2count['b'] == 20
|
||||
assert obj2count['c'] == 3
|
||||
assert obj2count['d'] == 4
|
||||
|
||||
f = flywheel([1,2,3,4], countFunc=lambda x: x*2)
|
||||
obj2count = {}
|
||||
for obj in f:
|
||||
obj2count.setdefault(obj, 0)
|
||||
obj2count[obj] += 1
|
||||
assert obj2count[1] == 2
|
||||
assert obj2count[2] == 4
|
||||
assert obj2count[3] == 6
|
||||
assert obj2count[4] == 8
|
||||
|
||||
f = flywheel([1,2,3,4], countFunc=lambda x: x, scale = 3)
|
||||
obj2count = {}
|
||||
for obj in f:
|
||||
obj2count.setdefault(obj, 0)
|
||||
obj2count[obj] += 1
|
||||
assert obj2count[1] == 1 * 3
|
||||
assert obj2count[2] == 2 * 3
|
||||
assert obj2count[3] == 3 * 3
|
||||
assert obj2count[4] == 4 * 3
|
||||
|
||||
if __debug__:
|
||||
def quickProfile(name="unnamed"):
|
||||
@ -2687,11 +2653,36 @@ def unescapeHtmlString(s):
|
||||
result += char
|
||||
return result
|
||||
|
||||
if __debug__ and __name__ == '__main__':
|
||||
assert unescapeHtmlString('asdf') == 'asdf'
|
||||
assert unescapeHtmlString('as+df') == 'as df'
|
||||
assert unescapeHtmlString('as%32df') == 'as2df'
|
||||
assert unescapeHtmlString('asdf%32') == 'asdf2'
|
||||
class PriorityCallbacks:
|
||||
""" manage a set of prioritized callbacks, and allow them to be invoked in order of priority """
|
||||
def __init__(self):
|
||||
self._callbacks = []
|
||||
|
||||
def clear(self):
|
||||
del self._callbacks[:]
|
||||
|
||||
def add(self, callback, priority=None):
|
||||
if priority is None:
|
||||
priority = 0
|
||||
callbacks = self._callbacks
|
||||
lo = 0
|
||||
hi = len(callbacks)
|
||||
while lo < hi:
|
||||
mid = (lo + hi) // 2
|
||||
if priority < callbacks[mid][0]:
|
||||
hi = mid
|
||||
else:
|
||||
lo = mid + 1
|
||||
item = (priority, callback)
|
||||
callbacks.insert(lo, item)
|
||||
return item
|
||||
|
||||
def remove(self, item):
|
||||
self._callbacks.remove(item)
|
||||
|
||||
def __call__(self):
|
||||
for priority, callback in self._callbacks:
|
||||
callback()
|
||||
|
||||
builtins.Functor = Functor
|
||||
builtins.Stack = Stack
|
||||
|
@ -2672,15 +2672,18 @@ class ShowBase(DirectObject.DirectObject):
|
||||
output file name (e.g. if sd = 4, movie_0001.png)
|
||||
- source is the Window, Buffer, DisplayRegion, or Texture from which
|
||||
to save the resulting images. The default is the main window.
|
||||
|
||||
The task is returned, so that it can be awaited.
|
||||
"""
|
||||
globalClock.setMode(ClockObject.MNonRealTime)
|
||||
globalClock.setDt(1.0/float(fps))
|
||||
t = taskMgr.add(self._movieTask, namePrefix + '_task')
|
||||
t = self.taskMgr.add(self._movieTask, namePrefix + '_task')
|
||||
t.frameIndex = 0 # Frame 0 is not captured.
|
||||
t.numFrames = int(duration * fps)
|
||||
t.source = source
|
||||
t.outputString = namePrefix + '_%0' + repr(sd) + 'd.' + format
|
||||
t.setUponDeath(lambda state: globalClock.setMode(ClockObject.MNormal))
|
||||
return t
|
||||
|
||||
def _movieTask(self, state):
|
||||
if state.frameIndex != 0:
|
||||
|
@ -23,7 +23,9 @@ class Transitions:
|
||||
scale=3.0,
|
||||
pos=Vec3(0, 0, 0)):
|
||||
self.transitionIval = None
|
||||
self.__transitionFuture = None
|
||||
self.letterboxIval = None
|
||||
self.__letterboxFuture = None
|
||||
self.iris = None
|
||||
self.fade = None
|
||||
self.letterbox = None
|
||||
@ -94,7 +96,9 @@ class Transitions:
|
||||
"""
|
||||
#self.noTransitions() masad: this creates a one frame pop, is it necessary?
|
||||
self.loadFade()
|
||||
transitionIval = Sequence(Func(self.fade.reparentTo, aspect2d, DGG.FADE_SORT_INDEX),
|
||||
|
||||
parent = aspect2d if self.fadeModel else render2d
|
||||
transitionIval = Sequence(Func(self.fade.reparentTo, parent, DGG.FADE_SORT_INDEX),
|
||||
Func(self.fade.showThrough), # in case aspect2d is hidden for some reason
|
||||
self.lerpFunc(self.fade, t,
|
||||
self.alphaOff,
|
||||
@ -115,7 +119,8 @@ class Transitions:
|
||||
self.noTransitions()
|
||||
self.loadFade()
|
||||
|
||||
transitionIval = Sequence(Func(self.fade.reparentTo,aspect2d,DGG.FADE_SORT_INDEX),
|
||||
parent = aspect2d if self.fadeModel else render2d
|
||||
transitionIval = Sequence(Func(self.fade.reparentTo, parent, DGG.FADE_SORT_INDEX),
|
||||
Func(self.fade.showThrough), # in case aspect2d is hidden for some reason
|
||||
self.lerpFunc(self.fade, t,
|
||||
self.alphaOn,
|
||||
@ -148,11 +153,17 @@ class Transitions:
|
||||
self.noTransitions()
|
||||
self.loadFade()
|
||||
self.fade.detachNode()
|
||||
fut = AsyncFuture()
|
||||
fut.setResult(None)
|
||||
return fut
|
||||
else:
|
||||
# Create a sequence that lerps the color out, then
|
||||
# parents the fade to hidden
|
||||
self.transitionIval = self.getFadeInIval(t, finishIval)
|
||||
self.transitionIval.append(Func(self.__finishTransition))
|
||||
self.__transitionFuture = AsyncFuture()
|
||||
self.transitionIval.start()
|
||||
return self.__transitionFuture
|
||||
|
||||
def fadeOut(self, t=0.5, finishIval=None):
|
||||
"""
|
||||
@ -167,7 +178,9 @@ class Transitions:
|
||||
# Fade out immediately with no lerp
|
||||
self.noTransitions()
|
||||
self.loadFade()
|
||||
self.fade.reparentTo(aspect2d, DGG.FADE_SORT_INDEX)
|
||||
|
||||
parent = aspect2d if self.fadeModel else render2d
|
||||
self.fade.reparentTo(parent, DGG.FADE_SORT_INDEX)
|
||||
self.fade.setColor(self.alphaOn)
|
||||
elif ConfigVariableBool('no-loading-screen', False):
|
||||
if finishIval:
|
||||
@ -176,8 +189,16 @@ class Transitions:
|
||||
else:
|
||||
# Create a sequence that lerps the color out, then
|
||||
# parents the fade to hidden
|
||||
self.transitionIval = self.getFadeOutIval(t,finishIval)
|
||||
self.transitionIval = self.getFadeOutIval(t, finishIval)
|
||||
self.transitionIval.append(Func(self.__finishTransition))
|
||||
self.__transitionFuture = AsyncFuture()
|
||||
self.transitionIval.start()
|
||||
return self.__transitionFuture
|
||||
|
||||
# Immediately done, so return a dummy future.
|
||||
fut = AsyncFuture()
|
||||
fut.setResult(None)
|
||||
return fut
|
||||
|
||||
def fadeOutActive(self):
|
||||
return self.fade and self.fade.getColor()[3] > 0
|
||||
@ -191,7 +212,9 @@ class Transitions:
|
||||
#print "transitiosn: fadeScreen"
|
||||
self.noTransitions()
|
||||
self.loadFade()
|
||||
self.fade.reparentTo(aspect2d, DGG.FADE_SORT_INDEX)
|
||||
|
||||
parent = aspect2d if self.fadeModel else render2d
|
||||
self.fade.reparentTo(parent, DGG.FADE_SORT_INDEX)
|
||||
self.fade.setColor(self.alphaOn[0],
|
||||
self.alphaOn[1],
|
||||
self.alphaOn[2],
|
||||
@ -206,7 +229,9 @@ class Transitions:
|
||||
#print "transitiosn: fadeScreenColor"
|
||||
self.noTransitions()
|
||||
self.loadFade()
|
||||
self.fade.reparentTo(aspect2d, DGG.FADE_SORT_INDEX)
|
||||
|
||||
parent = aspect2d if self.fadeModel else render2d
|
||||
self.fade.reparentTo(parent, DGG.FADE_SORT_INDEX)
|
||||
self.fade.setColor(color)
|
||||
|
||||
def noFade(self):
|
||||
@ -217,6 +242,9 @@ class Transitions:
|
||||
if self.transitionIval:
|
||||
self.transitionIval.pause()
|
||||
self.transitionIval = None
|
||||
if self.__transitionFuture:
|
||||
self.__transitionFuture.cancel()
|
||||
self.__transitionFuture = None
|
||||
if self.fade:
|
||||
# Make sure to reset the color, since fadeOutActive() is looking at it
|
||||
self.fade.setColor(self.alphaOff)
|
||||
@ -247,18 +275,25 @@ class Transitions:
|
||||
self.loadIris()
|
||||
if (t == 0):
|
||||
self.iris.detachNode()
|
||||
fut = AsyncFuture()
|
||||
fut.setResult(None)
|
||||
return fut
|
||||
else:
|
||||
self.iris.reparentTo(aspect2d, DGG.FADE_SORT_INDEX)
|
||||
|
||||
scale = 0.18 * max(base.a2dRight, base.a2dTop)
|
||||
self.transitionIval = Sequence(LerpScaleInterval(self.iris, t,
|
||||
scale = 0.18,
|
||||
scale = scale,
|
||||
startScale = 0.01),
|
||||
Func(self.iris.detachNode),
|
||||
Func(self.__finishTransition),
|
||||
name = self.irisTaskName,
|
||||
)
|
||||
self.__transitionFuture = AsyncFuture()
|
||||
if finishIval:
|
||||
self.transitionIval.append(finishIval)
|
||||
self.transitionIval.start()
|
||||
return self.__transitionFuture
|
||||
|
||||
def irisOut(self, t=0.5, finishIval=None):
|
||||
"""
|
||||
@ -274,20 +309,27 @@ class Transitions:
|
||||
if (t == 0):
|
||||
self.iris.detachNode()
|
||||
self.fadeOut(0)
|
||||
fut = AsyncFuture()
|
||||
fut.setResult(None)
|
||||
return fut
|
||||
else:
|
||||
self.iris.reparentTo(aspect2d, DGG.FADE_SORT_INDEX)
|
||||
|
||||
scale = 0.18 * max(base.a2dRight, base.a2dTop)
|
||||
self.transitionIval = Sequence(LerpScaleInterval(self.iris, t,
|
||||
scale = 0.01,
|
||||
startScale = 0.18),
|
||||
startScale = scale),
|
||||
Func(self.iris.detachNode),
|
||||
# Use the fade to cover up the hole that the iris would leave
|
||||
Func(self.fadeOut, 0),
|
||||
Func(self.__finishTransition),
|
||||
name = self.irisTaskName,
|
||||
)
|
||||
self.__transitionFuture = AsyncFuture()
|
||||
if finishIval:
|
||||
self.transitionIval.append(finishIval)
|
||||
self.transitionIval.start()
|
||||
return self.__transitionFuture
|
||||
|
||||
def noIris(self):
|
||||
"""
|
||||
@ -311,6 +353,11 @@ class Transitions:
|
||||
# Letterbox is not really a transition, it is a screen overlay
|
||||
# self.noLetterbox()
|
||||
|
||||
def __finishTransition(self):
|
||||
if self.__transitionFuture:
|
||||
self.__transitionFuture.setResult(None)
|
||||
self.__transitionFuture = None
|
||||
|
||||
##################################################
|
||||
# Letterbox
|
||||
##################################################
|
||||
@ -383,9 +430,17 @@ class Transitions:
|
||||
if self.letterboxIval:
|
||||
self.letterboxIval.pause()
|
||||
self.letterboxIval = None
|
||||
if self.__letterboxFuture:
|
||||
self.__letterboxFuture.cancel()
|
||||
self.__letterboxFuture = None
|
||||
if self.letterbox:
|
||||
self.letterbox.stash()
|
||||
|
||||
def __finishLetterbox(self):
|
||||
if self.__letterboxFuture:
|
||||
self.__letterboxFuture.setResult(None)
|
||||
self.__letterboxFuture = None
|
||||
|
||||
def letterboxOn(self, t=0.25, finishIval=None):
|
||||
"""
|
||||
Move black bars in over t seconds.
|
||||
@ -396,7 +451,11 @@ class Transitions:
|
||||
if (t == 0):
|
||||
self.letterboxBottom.setPos(0, 0, -1)
|
||||
self.letterboxTop.setPos(0, 0, 0.8)
|
||||
fut = AsyncFuture()
|
||||
fut.setResult(None)
|
||||
return fut
|
||||
else:
|
||||
self.__letterboxFuture = AsyncFuture()
|
||||
self.letterboxIval = Sequence(Parallel(
|
||||
LerpPosInterval(self.letterboxBottom,
|
||||
t,
|
||||
@ -409,11 +468,13 @@ class Transitions:
|
||||
# startPos = Vec3(0, 0, 1),
|
||||
),
|
||||
),
|
||||
Func(self.__finishLetterbox),
|
||||
name = self.letterboxTaskName,
|
||||
)
|
||||
if finishIval:
|
||||
self.letterboxIval.append(finishIval)
|
||||
self.letterboxIval.start()
|
||||
return self.__letterboxFuture
|
||||
|
||||
def letterboxOff(self, t=0.25, finishIval=None):
|
||||
"""
|
||||
@ -424,7 +485,11 @@ class Transitions:
|
||||
self.letterbox.unstash()
|
||||
if (t == 0):
|
||||
self.letterbox.stash()
|
||||
fut = AsyncFuture()
|
||||
fut.setResult(None)
|
||||
return fut
|
||||
else:
|
||||
self.__letterboxFuture = AsyncFuture()
|
||||
self.letterboxIval = Sequence(Parallel(
|
||||
LerpPosInterval(self.letterboxBottom,
|
||||
t,
|
||||
@ -438,9 +503,11 @@ class Transitions:
|
||||
),
|
||||
),
|
||||
Func(self.letterbox.stash),
|
||||
Func(self.__finishLetterbox),
|
||||
Func(messenger.send,'letterboxOff'),
|
||||
name = self.letterboxTaskName,
|
||||
)
|
||||
if finishIval:
|
||||
self.letterboxIval.append(finishIval)
|
||||
self.letterboxIval.start()
|
||||
return self.__letterboxFuture
|
||||
|
@ -418,7 +418,7 @@ mark_as_advanced(ANDROID_NDK_HOME ANDROID_ABI ANDROID_STL
|
||||
#
|
||||
|
||||
# Is Python installed, and should Python interfaces be generated?
|
||||
set(WANT_PYTHON_VERSION "2.7"
|
||||
set(WANT_PYTHON_VERSION ""
|
||||
CACHE STRING "Which Python version to seek out for building Panda3D against.")
|
||||
|
||||
find_package(PythonInterp ${WANT_PYTHON_VERSION} QUIET)
|
||||
|
@ -180,10 +180,15 @@ check_cxx_compiler_flag(-msse2 HAVE_SSE2)
|
||||
#$[cdefine __USE_LARGEFILE64]
|
||||
|
||||
# Set LINK_ALL_STATIC if we're building everything as static libraries.
|
||||
# Also set the library type used for "modules" appropriately.
|
||||
if(BUILD_SHARED_LIBS)
|
||||
set(LINK_ALL_STATIC OFF)
|
||||
set(MODULE_TYPE "MODULE"
|
||||
CACHE INTERNAL "" FORCE)
|
||||
else()
|
||||
set(LINK_ALL_STATIC ON)
|
||||
set(MODULE_TYPE "STATIC"
|
||||
CACHE INTERNAL "" FORCE)
|
||||
endif()
|
||||
|
||||
# Now go through all the packages and report whether we have them.
|
||||
|
@ -233,9 +233,6 @@
|
||||
to compile them out. */
|
||||
#cmakedefine NOTIFY_DEBUG
|
||||
|
||||
/* Define if we are linking PANDAPHYSX in with PANDA. */
|
||||
#cmakedefine LINK_IN_PHYSX
|
||||
|
||||
/* The compiled-in character(s) to expect to separate different
|
||||
components of a path list (e.g. $PRC_PATH). */
|
||||
#define DEFAULT_PATHSEP "@DEFAULT_PATHSEP@"
|
||||
|
@ -1,27 +1,3 @@
|
||||
# First, dtoolconfig:
|
||||
|
||||
set(DTOOLCONFIG_LINK_TARGETS p3prc p3dconfig p3interrogatedb)
|
||||
add_metalib(p3dtoolconfig dtoolconfig.cxx COMPONENTS ${DTOOLCONFIG_LINK_TARGETS})
|
||||
install(TARGETS p3dtoolconfig DESTINATION lib)
|
||||
|
||||
# Next, panda3d.interrogatedb:
|
||||
|
||||
if(BUILD_SHARED_LIBS)
|
||||
set(libtype MODULE)
|
||||
else()
|
||||
set(libtype STATIC)
|
||||
endif()
|
||||
|
||||
if(HAVE_PYTHON)
|
||||
add_library(interrogatedb ${libtype} pydtool.cxx)
|
||||
target_use_packages(interrogatedb PYTHON)
|
||||
target_link_libraries(interrogatedb p3dtoolconfig)
|
||||
|
||||
set_target_properties(interrogatedb PROPERTIES
|
||||
LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/panda3d"
|
||||
PREFIX ""
|
||||
OUTPUT_NAME "interrogatedb"
|
||||
)
|
||||
|
||||
install(TARGETS interrogatedb DESTINATION "${PYTHON_ARCH_INSTALL_DIR}/panda3d")
|
||||
endif()
|
||||
|
@ -224,12 +224,24 @@ substitute_decl(CPPDeclaration::SubstDecl &subst,
|
||||
bool any_changed = false;
|
||||
|
||||
for (size_t i = 0; i < _elements.size(); ++i) {
|
||||
CPPInstance *elem_rep =
|
||||
_elements[i]->substitute_decl(subst, current_scope, global_scope)
|
||||
->as_instance();
|
||||
// We don't just do substitute_decl on the instance, which could lead to
|
||||
// an infinite recursion.
|
||||
CPPInstance *element = _elements[i];
|
||||
CPPExpression *value = element->_initializer->
|
||||
substitute_decl(subst, current_scope, global_scope)->as_expression();
|
||||
|
||||
if (elem_rep != _elements[i]) {
|
||||
rep->_elements[i] = elem_rep;
|
||||
if (is_scoped()) {
|
||||
// For a strong enum, we consider the elements to be of this type.
|
||||
if (value != element->_initializer) {
|
||||
rep->_elements[i] = new CPPInstance(rep, element->_ident);
|
||||
rep->_elements[i]->_initializer = value;
|
||||
any_changed = true;
|
||||
}
|
||||
} else if (value != element->_initializer ||
|
||||
rep->get_underlying_type() != get_underlying_type()) {
|
||||
// In an unscoped enum, the elements are integers.
|
||||
rep->_elements[i] = new CPPInstance(rep->get_underlying_type(), element->_ident);
|
||||
rep->_elements[i]->_initializer = value;
|
||||
any_changed = true;
|
||||
}
|
||||
}
|
||||
|
@ -81,7 +81,7 @@ as_integer() const {
|
||||
|
||||
case RT_pointer:
|
||||
// We don't mind if this loses precision.
|
||||
return (int)reinterpret_cast<long>(_u._pointer);
|
||||
return (int)(intptr_t)(_u._pointer);
|
||||
|
||||
default:
|
||||
cerr << "Invalid type\n";
|
||||
@ -104,7 +104,7 @@ as_real() const {
|
||||
|
||||
case RT_pointer:
|
||||
// We don't mind if this loses precision.
|
||||
return (double)reinterpret_cast<long>(_u._pointer);
|
||||
return (double)(uintptr_t)(_u._pointer);
|
||||
|
||||
default:
|
||||
cerr << "Invalid type\n";
|
||||
@ -120,10 +120,10 @@ void *CPPExpression::Result::
|
||||
as_pointer() const {
|
||||
switch (_type) {
|
||||
case RT_integer:
|
||||
return reinterpret_cast<void*>((long)_u._integer);
|
||||
return (void *)(intptr_t)_u._integer;
|
||||
|
||||
case RT_real:
|
||||
return reinterpret_cast<void*>((long)_u._real);
|
||||
return (void *)(uintptr_t)_u._real;
|
||||
|
||||
case RT_pointer:
|
||||
return _u._pointer;
|
||||
|
@ -1,4 +1,10 @@
|
||||
configure_file(pandaVersion.h.in pandaVersion.h)
|
||||
configure_file(checkPandaVersion.h.in checkPandaVersion.h)
|
||||
configure_file(checkPandaVersion.cxx.in checkPandaVersion.cxx)
|
||||
|
||||
set(P3DTOOLBASE_HEADERS
|
||||
${CMAKE_CURRENT_BINARY_DIR}/checkPandaVersion.h
|
||||
${CMAKE_CURRENT_BINARY_DIR}/pandaVersion.h
|
||||
addHash.I addHash.h
|
||||
atomicAdjust.h
|
||||
atomicAdjustDummyImpl.h atomicAdjustDummyImpl.I
|
||||
@ -38,6 +44,7 @@ set(P3DTOOLBASE_HEADERS
|
||||
)
|
||||
|
||||
set(P3DTOOLBASE_SOURCES
|
||||
${CMAKE_CURRENT_BINARY_DIR}/checkPandaVersion.cxx
|
||||
addHash.cxx
|
||||
atomicAdjustDummyImpl.cxx
|
||||
atomicAdjustI386Impl.cxx
|
||||
@ -74,6 +81,8 @@ add_component_library(p3dtoolbase SYMBOL BUILDING_DTOOL_DTOOLBASE
|
||||
# The extensions need py_panda.h and extension.h from interrogatedb
|
||||
target_include_directories(p3dtoolbase PUBLIC
|
||||
$<TARGET_PROPERTY:p3interrogatedb,INTERFACE_INCLUDE_DIRECTORIES>)
|
||||
# Help other libraries find the autogenerated version headers
|
||||
target_include_directories(p3dtoolbase PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
|
||||
target_use_packages(p3dtoolbase THREADS EIGEN)
|
||||
target_interrogate(p3dtoolbase ${P3DTOOLBASE_SOURCES} EXTENSIONS ${P3DTOOLBASE_IGATEEXT})
|
||||
|
||||
|
@ -18,4 +18,4 @@
|
||||
|
||||
#include "dtoolbase.h"
|
||||
|
||||
EXPCL_DTOOL_DTOOLUTIL int @PANDA_VERSION_SYMBOL@ = 0;
|
||||
EXPCL_DTOOL_DTOOLBASE int @PANDA_VERSION_SYMBOL@ = 0;
|
64
dtool/src/dtoolbase/checkPandaVersion.h.in
Normal file
64
dtool/src/dtoolbase/checkPandaVersion.h.in
Normal file
@ -0,0 +1,64 @@
|
||||
/* Filename: checkPandaVersion.h
|
||||
* Created by: drose (26Jan05)
|
||||
*
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
*
|
||||
* PANDA 3D SOFTWARE
|
||||
* Copyright (c) Carnegie Mellon University. All rights reserved.
|
||||
*
|
||||
* All use of this software is subject to the terms of the revised BSD
|
||||
* license. You should have received a copy of this license along
|
||||
* with this source code in a file named "LICENSE."
|
||||
*
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*******************************************************************
|
||||
* Generated automatically by CMake.
|
||||
***************************** DO NOT EDIT *************************/
|
||||
|
||||
/* Include this file in code that compiles with Panda to guarantee
|
||||
that it is linking with the same version of the Panda DLL's that it
|
||||
was compiled with. */
|
||||
|
||||
/* We guarantee this by defining an external symbol which is based on
|
||||
the version number. If that symbol is defined, then our DLL's
|
||||
(probably) match. Otherwise, we must be running with the wrong
|
||||
DLL; but the system linker will prevent the DLL from loading with
|
||||
an undefined symbol. */
|
||||
|
||||
#ifndef CHECKPANDAVERSION_H
|
||||
#define CHECKPANDAVERSION_H
|
||||
|
||||
#include "dtoolbase.h"
|
||||
|
||||
extern EXPCL_DTOOL_DTOOLBASE int @PANDA_VERSION_SYMBOL@;
|
||||
|
||||
/* Just declaring the symbol isn't good enough. We need to force the
|
||||
compiler and linker to preserve the external reference long enough
|
||||
to end up in the output DLL. Therefore, we have to reference that
|
||||
symbol somehow.
|
||||
|
||||
Forcing the compiler to include a reference in its output object
|
||||
file is easy enough: just define a function that makes use of it
|
||||
in some way. The problem is the linker, which will enforce the
|
||||
C++ One-Definition Rule and get upset about said definition
|
||||
appearing in multiple places in the program. We can appease the
|
||||
linker by forcing the compiler to emit a weak symbol. Many
|
||||
compilers have syntax to request this explicitly, but since it
|
||||
varies from compiler to compiler, that wouldn't be very portable.
|
||||
|
||||
Fortunately, the C++ ODR itself has some exceptions, where a
|
||||
definition can occur in multiple translation units *if and only if*
|
||||
it's the same definition each time. In these cases, the compiler
|
||||
must emit a weak symbol, because the ODR does not guarantee that
|
||||
the same definition isn't repeated in any other translation units.
|
||||
One such exception is template instantiation, which we use thus: */
|
||||
template<typename T>
|
||||
class CheckPandaVersion {
|
||||
public:
|
||||
int check() { return @PANDA_VERSION_SYMBOL@; }
|
||||
};
|
||||
|
||||
template class CheckPandaVersion<void>;
|
||||
|
||||
#endif
|
@ -122,6 +122,11 @@ typedef ios::seekdir ios_seekdir;
|
||||
// Apple has an outdated libstdc++. Not all is lost, though, as we can fill
|
||||
// in some important missing functions.
|
||||
#if defined(__GLIBCXX__) && __GLIBCXX__ <= 20070719
|
||||
#include <tr1/tuple>
|
||||
|
||||
using std::tr1::tuple;
|
||||
using std::tr1::tie;
|
||||
|
||||
typedef decltype(nullptr) nullptr_t;
|
||||
|
||||
template<class T> struct remove_reference {typedef T type;};
|
||||
|
@ -1,10 +1,4 @@
|
||||
configure_file(pandaVersion.h.in pandaVersion.h)
|
||||
configure_file(checkPandaVersion.h.in checkPandaVersion.h)
|
||||
configure_file(checkPandaVersion.cxx.in checkPandaVersion.cxx)
|
||||
|
||||
set(P3DTOOLUTIL_HEADERS
|
||||
${CMAKE_CURRENT_BINARY_DIR}/checkPandaVersion.h
|
||||
${CMAKE_CURRENT_BINARY_DIR}/pandaVersion.h
|
||||
config_dtoolutil.h
|
||||
dSearchPath.I dSearchPath.h
|
||||
executionEnvironment.I executionEnvironment.h filename.I
|
||||
@ -40,7 +34,6 @@ if(APPLE)
|
||||
endif()
|
||||
|
||||
set(P3DTOOLUTIL_SOURCES
|
||||
${CMAKE_CURRENT_BINARY_DIR}/checkPandaVersion.cxx
|
||||
config_dtoolutil.cxx
|
||||
dSearchPath.cxx
|
||||
executionEnvironment.cxx filename.cxx
|
||||
@ -76,7 +69,6 @@ composite_sources(p3dtoolutil P3DTOOLUTIL_SOURCES)
|
||||
add_component_library(p3dtoolutil SYMBOL BUILDING_DTOOL_DTOOLUTIL
|
||||
${P3DTOOLUTIL_HEADERS} ${P3DTOOLUTIL_SOURCES})
|
||||
set_target_properties(p3dtoolutil PROPERTIES COMPILE_FLAGS ${P3DTOOLUTIL_EXTRA_FLAGS})
|
||||
target_include_directories(p3dtoolutil PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
|
||||
# The extensions need py_panda.h and extension.h from interrogatedb
|
||||
target_include_directories(p3dtoolutil PUBLIC
|
||||
$<TARGET_PROPERTY:p3interrogatedb,INTERFACE_INCLUDE_DIRECTORIES>)
|
||||
|
@ -1,39 +0,0 @@
|
||||
/* Filename: checkPandaVersion.h
|
||||
* Created by: drose (26Jan05)
|
||||
*
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
*
|
||||
* PANDA 3D SOFTWARE
|
||||
* Copyright (c) Carnegie Mellon University. All rights reserved.
|
||||
*
|
||||
* All use of this software is subject to the terms of the revised BSD
|
||||
* license. You should have received a copy of this license along
|
||||
* with this source code in a file named "LICENSE."
|
||||
*
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*******************************************************************
|
||||
* Generated automatically by CMake.
|
||||
***************************** DO NOT EDIT *************************/
|
||||
|
||||
/* Include this file in code that compiles with Panda to guarantee
|
||||
that it is linking with the same version of the Panda DLL's that it
|
||||
was compiled with. You should include it in one .cxx file only. */
|
||||
|
||||
/* We guarantee this by defining an external symbol which is based on
|
||||
the version number. If that symbol is defined, then our DLL's
|
||||
(probably) match. Otherwise, we must be running with the wrong
|
||||
DLL; but the system linker will prevent the DLL from loading with
|
||||
an undefined symbol. */
|
||||
|
||||
#include "dtoolbase.h"
|
||||
|
||||
extern EXPCL_DTOOL_DTOOLUTIL int @PANDA_VERSION_SYMBOL@;
|
||||
|
||||
#ifndef WIN32
|
||||
/* For Windows, exporting the symbol from the DLL is sufficient; the
|
||||
DLL will not load unless all expected public symbols are defined.
|
||||
Other systems may not mind if the symbol is absent unless we
|
||||
explictly write code that references it. */
|
||||
static int check_panda_version = @PANDA_VERSION_SYMBOL@;
|
||||
#endif
|
@ -27,24 +27,53 @@ set(P3INTERROGATEDB_SOURCES
|
||||
py_panda.cxx
|
||||
py_wrappers.cxx)
|
||||
|
||||
composite_sources(p3interrogatedb P3INTERROGATEDB_SOURCES)
|
||||
set(P3INTERROGATEDB_IGATE
|
||||
interrogate_interface.h
|
||||
interrogate_request.h
|
||||
)
|
||||
|
||||
set(P3INTERROGATEDB_IGATE_SOURCES
|
||||
config_interrogatedb.cxx
|
||||
indexRemapper.cxx
|
||||
interrogateComponent.cxx interrogateDatabase.cxx
|
||||
interrogateElement.cxx interrogateFunction.cxx
|
||||
interrogateFunctionWrapper.cxx
|
||||
interrogateMakeSeq.cxx
|
||||
interrogateManifest.cxx
|
||||
interrogateType.cxx interrogate_datafile.cxx
|
||||
interrogate_interface.cxx interrogate_request.cxx)
|
||||
composite_sources(p3interrogatedb P3INTERROGATEDB_SOURCES)
|
||||
|
||||
add_component_library(p3interrogatedb SYMBOL SYMBOL BUILDING_INTERROGATEDB
|
||||
${P3INTERROGATEDB_HEADERS} ${P3INTERROGATEDB_SOURCES})
|
||||
target_link_libraries(p3interrogatedb p3dconfig)
|
||||
target_use_packages(p3interrogatedb PYTHON)
|
||||
target_interrogate(p3interrogatedb ${P3INTERROGATEDB_IGATE_SOURCES})
|
||||
|
||||
install(TARGETS p3interrogatedb DESTINATION lib)
|
||||
install(FILES ${P3INTERROGATEDB_HEADERS} DESTINATION include/panda3d)
|
||||
|
||||
# ALSO: This has an Interrogate binding! Take care of that if we want it.
|
||||
# Note we don't use the regular Interrogate macros; this has some custom flags
|
||||
# that would make it not worthwhile.
|
||||
|
||||
if(NOT HAVE_PYTHON OR NOT INTERROGATE_PYTHON_INTERFACE)
|
||||
return()
|
||||
endif()
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/interrogatedb_module.cxx"
|
||||
COMMAND interrogate
|
||||
-D EXPCL_INTERROGATEDB=
|
||||
-nodb -python -promiscuous
|
||||
-module panda3d.interrogatedb
|
||||
-library interrogatedb
|
||||
-string -true-names -do-module
|
||||
-srcdir "${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
-oc "${CMAKE_CURRENT_BINARY_DIR}/interrogatedb_module.cxx"
|
||||
${P3INTERROGATEDB_IGATE}
|
||||
DEPENDS interrogate ${P3INTERROGATEDB_IGATE}
|
||||
COMMENT "Interrogating interrogatedb"
|
||||
)
|
||||
|
||||
add_library(interrogatedb ${MODULE_TYPE}
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/interrogatedb_module.cxx")
|
||||
target_use_packages(interrogatedb PYTHON)
|
||||
target_link_libraries(interrogatedb p3dtoolconfig)
|
||||
|
||||
set_target_properties(interrogatedb PROPERTIES
|
||||
LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/panda3d"
|
||||
PREFIX ""
|
||||
OUTPUT_NAME "interrogatedb"
|
||||
)
|
||||
|
||||
install(TARGETS interrogatedb DESTINATION "${PYTHON_ARCH_INSTALL_DIR}/panda3d")
|
||||
|
@ -368,7 +368,7 @@ SectionGroup "Python support"
|
||||
SetOutPath $INSTDIR\pandac\input
|
||||
File /r "${BUILT}\pandac\input\*"
|
||||
SetOutPath $INSTDIR\Pmw
|
||||
File /r /x CVS "${BUILT}\Pmw\*"
|
||||
File /nonfatal /r /x CVS "${BUILT}\Pmw\*"
|
||||
|
||||
!ifdef REGVIEW
|
||||
SetRegView ${REGVIEW}
|
||||
|
@ -3668,6 +3668,7 @@ if (not RUNTIME):
|
||||
OPTS=['DIR:panda/src/putil', 'ZLIB', 'PYTHON']
|
||||
IGATEFILES=GetDirectoryContents('panda/src/putil', ["*.h", "*_composite*.cxx"])
|
||||
IGATEFILES.remove("test_bam.h")
|
||||
IGATEFILES.remove("config_util.h")
|
||||
TargetAdd('libp3putil.in', opts=OPTS, input=IGATEFILES)
|
||||
TargetAdd('libp3putil.in', opts=['IMOD:panda3d.core', 'ILIB:libp3putil', 'SRCDIR:panda/src/putil'])
|
||||
TargetAdd('libp3putil_igate.obj', input='libp3putil.in', opts=["DEPENDENCYONLY"])
|
||||
@ -3794,6 +3795,7 @@ if (not RUNTIME):
|
||||
|
||||
OPTS=['DIR:panda/src/pstatclient', 'PYTHON']
|
||||
IGATEFILES=GetDirectoryContents('panda/src/pstatclient', ["*.h", "*_composite*.cxx"])
|
||||
IGATEFILES.remove("config_pstats.h")
|
||||
TargetAdd('libp3pstatclient.in', opts=OPTS, input=IGATEFILES)
|
||||
TargetAdd('libp3pstatclient.in', opts=['IMOD:panda3d.core', 'ILIB:libp3pstatclient', 'SRCDIR:panda/src/pstatclient'])
|
||||
TargetAdd('libp3pstatclient_igate.obj', input='libp3pstatclient.in', opts=["DEPENDENCYONLY"])
|
||||
@ -6110,9 +6112,9 @@ if not PkgSkip("PANDATOOL"):
|
||||
TargetAdd('pfm-trans.exe', opts=['ADVAPI'])
|
||||
|
||||
TargetAdd('pfm-bba_pfmBba.obj', opts=OPTS, input='pfmBba.cxx')
|
||||
TargetAdd('pfm-bba_config_pfm.obj', opts=OPTS, input='config_pfm.cxx')
|
||||
TargetAdd('pfm-bba_config_pfmprogs.obj', opts=OPTS, input='config_pfmprogs.cxx')
|
||||
TargetAdd('pfm-bba.exe', input='pfm-bba_pfmBba.obj')
|
||||
TargetAdd('pfm-bba.exe', input='pfm-bba_config_pfm.obj')
|
||||
TargetAdd('pfm-bba.exe', input='pfm-bba_config_pfmprogs.obj')
|
||||
TargetAdd('pfm-bba.exe', input='libp3progbase.lib')
|
||||
TargetAdd('pfm-bba.exe', input='libp3pandatoolbase.lib')
|
||||
TargetAdd('pfm-bba.exe', input=COMMON_PANDA_LIBS)
|
||||
|
@ -1228,7 +1228,7 @@
|
||||
<File RelativePath="..\panda\src\putil\pta_double.h"></File>
|
||||
<File RelativePath="..\panda\src\putil\copyOnWritePointer.cxx"></File>
|
||||
<File RelativePath="..\panda\src\putil\bitMask.cxx"></File>
|
||||
<File RelativePath="..\panda\src\putil\config_util.h"></File>
|
||||
<File RelativePath="..\panda\src\putil\config_putil.h"></File>
|
||||
<File RelativePath="..\panda\src\putil\clockObject.h"></File>
|
||||
<File RelativePath="..\panda\src\putil\lineStream.h"></File>
|
||||
<File RelativePath="..\panda\src\putil\datagramInputFile.cxx"></File>
|
||||
@ -1307,7 +1307,7 @@
|
||||
<File RelativePath="..\panda\src\putil\bamCacheRecord.I"></File>
|
||||
<File RelativePath="..\panda\src\putil\animInterface.cxx"></File>
|
||||
<File RelativePath="..\panda\src\putil\lineStreamBuf.h"></File>
|
||||
<File RelativePath="..\panda\src\putil\config_util.cxx"></File>
|
||||
<File RelativePath="..\panda\src\putil\config_putil.cxx"></File>
|
||||
<File RelativePath="..\panda\src\putil\cachedTypedWritableReferenceCount.cxx"></File>
|
||||
<File RelativePath="..\panda\src\putil\pythonCallbackObject.cxx"></File>
|
||||
<File RelativePath="..\panda\src\putil\test_linestream.cxx"></File>
|
||||
@ -2322,8 +2322,8 @@
|
||||
<File RelativePath="..\panda\src\pstatclient\pStatCollectorForward.h"></File>
|
||||
<File RelativePath="..\panda\src\pstatclient\pStatClientControlMessage.h"></File>
|
||||
<File RelativePath="..\panda\src\pstatclient\pStatServerControlMessage.h"></File>
|
||||
<File RelativePath="..\panda\src\pstatclient\config_pstats.h"></File>
|
||||
<File RelativePath="..\panda\src\pstatclient\config_pstats.cxx"></File>
|
||||
<File RelativePath="..\panda\src\pstatclient\config_pstatclient.h"></File>
|
||||
<File RelativePath="..\panda\src\pstatclient\config_pstatclient.cxx"></File>
|
||||
<File RelativePath="..\panda\src\pstatclient\pStatClient.cxx"></File>
|
||||
<File RelativePath="..\panda\src\pstatclient\pStatFrameData.I"></File>
|
||||
<File RelativePath="..\panda\src\pstatclient\test_client.cxx"></File>
|
||||
|
@ -11,14 +11,6 @@ if(HAVE_FREETYPE)
|
||||
list(APPEND PANDA_LINK_TARGETS p3pnmtext)
|
||||
endif()
|
||||
|
||||
if(LINK_IN_PHYSX)
|
||||
add_definitions(-DBUILDING_PANDAPHYSX)
|
||||
set(PANDA_LINK_TARGETS
|
||||
${PANDA_LINK_TARGETS}
|
||||
p3physx
|
||||
)
|
||||
endif()
|
||||
|
||||
add_metalib(panda panda.cxx COMPONENTS ${PANDA_LINK_TARGETS})
|
||||
set_target_properties(panda PROPERTIES DEFINE_SYMBOL BUILDING_LIBPANDA)
|
||||
|
||||
|
@ -11,7 +11,7 @@
|
||||
#include "config_display.h"
|
||||
#include "config_pgraph.h"
|
||||
#ifdef DO_PSTATS
|
||||
#include "config_pstats.h"
|
||||
#include "config_pstatclient.h"
|
||||
#endif
|
||||
|
||||
// By including checkPandaVersion.h, we guarantee that runtime attempts to
|
||||
|
@ -12,7 +12,7 @@
|
||||
*/
|
||||
|
||||
#include "config_android.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
#include "virtualFileMountAndroidAsset.h"
|
||||
#include "virtualFileSystem.h"
|
||||
#include "filename.h"
|
||||
|
@ -18,7 +18,7 @@
|
||||
#include "nullAudioManager.h"
|
||||
#include "windowsRegistry.h"
|
||||
#include "virtualFileSystem.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
#include "load_dso.h"
|
||||
|
||||
#ifdef WIN32
|
||||
|
@ -20,7 +20,7 @@
|
||||
|
||||
// Panda headers.
|
||||
#include "config_audio.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
#include "fmodAudioManager.h"
|
||||
#include "fmodAudioSound.h"
|
||||
#include "filename.h"
|
||||
|
@ -21,7 +21,7 @@
|
||||
#include "milesAudioStream.h"
|
||||
#include "globalMilesManager.h"
|
||||
#include "config_audio.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
#include "config_express.h"
|
||||
#include "virtualFileSystem.h"
|
||||
#include "nullAudioSound.h"
|
||||
|
@ -14,7 +14,7 @@
|
||||
|
||||
// Panda headers.
|
||||
#include "config_audio.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
#include "config_express.h"
|
||||
#include "config_openalAudio.h"
|
||||
#include "openalAudioManager.h"
|
||||
|
@ -1052,7 +1052,7 @@ BulletPersistentManifold *BulletWorld::
|
||||
get_manifold(int idx) const {
|
||||
LightMutexHolder holder(get_global_lock());
|
||||
|
||||
nassertr(idx < get_num_manifolds(), NULL);
|
||||
nassertr(idx < _dispatcher->getNumManifolds(), NULL);
|
||||
|
||||
btPersistentManifold *ptr = _dispatcher->getManifoldByIndexInternal(idx);
|
||||
return (ptr) ? new BulletPersistentManifold(ptr) : NULL;
|
||||
@ -1186,7 +1186,12 @@ tick_callback(btDynamicsWorld *world, btScalar timestep) {
|
||||
CallbackObject *obj = w->_tick_callback_obj;
|
||||
if (obj) {
|
||||
BulletTickCallbackData cbdata(timestep);
|
||||
// Release the global lock that we are holding during the tick callback
|
||||
// and allow interactions with bullet world in the user callback
|
||||
get_global_lock().release();
|
||||
obj->do_callback(&cbdata);
|
||||
// Acquire the global lock again and protect the execution
|
||||
get_global_lock().acquire();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -16,7 +16,7 @@
|
||||
#include "config_collada.h"
|
||||
#include "sceneGraphReducer.h"
|
||||
#include "virtualFileSystem.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
#include "bamCacheRecord.h"
|
||||
|
||||
static PT(PandaNode)
|
||||
|
@ -19,7 +19,7 @@
|
||||
#include "config_display.h"
|
||||
#include "typeRegistry.h"
|
||||
#include "pset.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
|
@ -58,7 +58,7 @@
|
||||
#include "colorScaleAttrib.h"
|
||||
#include "clipPlaneAttrib.h"
|
||||
#include "fogAttrib.h"
|
||||
#include "config_pstats.h"
|
||||
#include "config_pstatclient.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <limits.h>
|
||||
|
@ -17,7 +17,7 @@
|
||||
#include "pandabase.h"
|
||||
#include "pStatTimer.h"
|
||||
#include "pStatCollector.h"
|
||||
#include "config_pstats.h"
|
||||
#include "config_pstatclient.h"
|
||||
#include "timerQueryContext.h"
|
||||
|
||||
class Thread;
|
||||
|
@ -426,6 +426,23 @@ get_max_updates_per_second() const {
|
||||
return _max_updates_per_second;
|
||||
}
|
||||
|
||||
/**
|
||||
* Specifies the Content-Type header, useful for applications that require
|
||||
* different types of content, such as JSON.
|
||||
*/
|
||||
INLINE void HTTPChannel::
|
||||
set_content_type(string content_type) {
|
||||
_content_type = content_type;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value of the Content-Type header.
|
||||
*/
|
||||
INLINE string HTTPChannel::
|
||||
get_content_type() const {
|
||||
return _content_type;
|
||||
}
|
||||
|
||||
/**
|
||||
* This may be called immediately after a call to get_document() or some
|
||||
* related function to specify the expected size of the document we are
|
||||
|
@ -100,6 +100,7 @@ HTTPChannel(HTTPClient *client) :
|
||||
_response_type = RT_none;
|
||||
_http_version = _client->get_http_version();
|
||||
_http_version_string = _client->get_http_version_string();
|
||||
_content_type = "application/x-www-form-urlencoded";
|
||||
_state = S_new;
|
||||
_done_state = S_new;
|
||||
_started_download = false;
|
||||
@ -3624,7 +3625,7 @@ make_header() {
|
||||
|
||||
if (!_body.empty()) {
|
||||
stream
|
||||
<< "Content-Type: application/x-www-form-urlencoded\r\n"
|
||||
<< "Content-Type: " << _content_type << "\r\n"
|
||||
<< "Content-Length: " << _body.length() << "\r\n";
|
||||
}
|
||||
|
||||
|
@ -143,6 +143,9 @@ PUBLISHED:
|
||||
INLINE void set_max_updates_per_second(double max_updates_per_second);
|
||||
INLINE double get_max_updates_per_second() const;
|
||||
|
||||
INLINE void set_content_type(string content_type);
|
||||
INLINE string get_content_type() const;
|
||||
|
||||
INLINE void set_expected_file_size(size_t file_size);
|
||||
streamsize get_file_size() const;
|
||||
INLINE bool is_file_size_known() const;
|
||||
@ -336,6 +339,7 @@ private:
|
||||
string request_path;
|
||||
string _header;
|
||||
string _body;
|
||||
string _content_type;
|
||||
bool _want_ssl;
|
||||
bool _proxy_serves_document;
|
||||
bool _proxy_tunnel_now;
|
||||
|
@ -18,7 +18,7 @@
|
||||
#include "eggComment.h"
|
||||
#include "eggPoolUniquifier.h"
|
||||
#include "config_egg.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
#include "config_express.h"
|
||||
#include "string_utils.h"
|
||||
#include "dSearchPath.h"
|
||||
|
@ -16,7 +16,7 @@
|
||||
#include "config_egg2pg.h"
|
||||
#include "sceneGraphReducer.h"
|
||||
#include "virtualFileSystem.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
#include "bamCacheRecord.h"
|
||||
|
||||
static PT(PandaNode)
|
||||
|
@ -17,7 +17,7 @@
|
||||
#include "modelRoot.h"
|
||||
#include "sceneGraphReducer.h"
|
||||
#include "virtualFileSystem.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
|
||||
/**
|
||||
* A convenience function; converts the indicated scene graph to an egg file
|
||||
|
@ -119,6 +119,7 @@ protected:
|
||||
double _wake_time;
|
||||
int _sort;
|
||||
int _priority;
|
||||
unsigned int _implicit_sort;
|
||||
|
||||
State _state;
|
||||
Thread *_servicing_thread;
|
||||
|
@ -51,7 +51,8 @@ AsyncTaskChain(AsyncTaskManager *manager, const string &name) :
|
||||
_needs_cleanup(false),
|
||||
_current_frame(0),
|
||||
_time_in_frame(0.0),
|
||||
_block_till_next_frame(false)
|
||||
_block_till_next_frame(false),
|
||||
_next_implicit_sort(0)
|
||||
{
|
||||
}
|
||||
|
||||
@ -418,6 +419,9 @@ do_add(AsyncTask *task) {
|
||||
task->_start_time = now;
|
||||
task->_start_frame = _manager->_clock->get_frame_count();
|
||||
|
||||
// Remember the order in which tasks were added to the chain.
|
||||
task->_implicit_sort = _next_implicit_sort++;
|
||||
|
||||
_manager->add_task_by_name(task);
|
||||
|
||||
if (task->has_delay()) {
|
||||
|
@ -146,7 +146,12 @@ protected:
|
||||
if (a->get_priority() != b->get_priority()) {
|
||||
return a->get_priority() < b->get_priority();
|
||||
}
|
||||
return a->get_start_time() > b->get_start_time();
|
||||
if (a->get_start_time() != b->get_start_time()) {
|
||||
return a->get_start_time() > b->get_start_time();
|
||||
}
|
||||
// Failing any other ordering criteria, we sort the tasks based on the
|
||||
// order in which they were added to the task chain.
|
||||
return a->_implicit_sort > b->_implicit_sort;
|
||||
}
|
||||
};
|
||||
|
||||
@ -186,6 +191,8 @@ protected:
|
||||
double _time_in_frame;
|
||||
bool _block_till_next_frame;
|
||||
|
||||
unsigned int _next_implicit_sort;
|
||||
|
||||
static PStatCollector _task_pcollector;
|
||||
static PStatCollector _wait_pcollector;
|
||||
|
||||
|
@ -94,6 +94,9 @@ PythonTask::
|
||||
PyErr_Restore(_exception, _exc_value, _exc_traceback);
|
||||
PyErr_Print();
|
||||
PyErr_Restore(nullptr, nullptr, nullptr);
|
||||
_exception = nullptr;
|
||||
_exc_value = nullptr;
|
||||
_exc_traceback = nullptr;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -14,7 +14,7 @@
|
||||
* get_supports_cg_profile)
|
||||
*/
|
||||
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
#include "displayRegion.h"
|
||||
#include "renderBuffer.h"
|
||||
#include "geom.h"
|
||||
@ -12647,7 +12647,7 @@ upload_texture_image(CLP(TextureContext) *gtc, bool needs_reload,
|
||||
int depth = tex->get_expected_mipmap_z_size(mipmap_bias);
|
||||
|
||||
// Determine the number of images to upload.
|
||||
int num_levels = 1;
|
||||
int num_levels = mipmap_bias + 1;
|
||||
if (uses_mipmaps) {
|
||||
num_levels = tex->get_expected_num_mipmap_levels();
|
||||
}
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
#include "animateVerticesRequest.h"
|
||||
#include "bufferContext.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
#include "config_gobj.h"
|
||||
#include "geom.h"
|
||||
#include "geomCacheEntry.h"
|
||||
|
@ -19,7 +19,7 @@
|
||||
#include "shader.h"
|
||||
#include "preparedGraphicsObjects.h"
|
||||
#include "virtualFileSystem.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
#include "bamCache.h"
|
||||
#include "string_utils.h"
|
||||
|
||||
|
@ -16,7 +16,7 @@
|
||||
#include "pandabase.h"
|
||||
#include "texture.h"
|
||||
#include "config_gobj.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
#include "texturePool.h"
|
||||
#include "textureContext.h"
|
||||
#include "bamCache.h"
|
||||
|
@ -15,7 +15,7 @@
|
||||
|
||||
#include "texturePool.h"
|
||||
#include "config_gobj.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
#include "config_express.h"
|
||||
#include "string_utils.h"
|
||||
#include "virtualFileSystem.h"
|
||||
|
@ -31,7 +31,7 @@
|
||||
#include "throw_event.h"
|
||||
#include "pnmImage.h"
|
||||
#include "virtualFileSystem.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
#include "pset.h"
|
||||
#include "pmutex.h"
|
||||
|
||||
|
@ -14,7 +14,7 @@
|
||||
#include "movieTypeRegistry.h"
|
||||
#include "string_utils.h"
|
||||
#include "config_movies.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
#include "load_dso.h"
|
||||
|
||||
MovieTypeRegistry *MovieTypeRegistry::_global_ptr = NULL;
|
||||
|
@ -36,7 +36,7 @@
|
||||
#include "throw_event.h"
|
||||
#include "pnmImage.h"
|
||||
#include "virtualFileSystem.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
#include "pset.h"
|
||||
#include "pmutex.h"
|
||||
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
#include "bam.h"
|
||||
#include "bamCacheRecord.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
#include "bamReader.h"
|
||||
#include "bamWriter.h"
|
||||
#include "filename.h"
|
||||
|
@ -19,7 +19,7 @@
|
||||
#include "modelLoadRequest.h"
|
||||
#include "modelSaveRequest.h"
|
||||
#include "config_express.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
#include "virtualFileSystem.h"
|
||||
#include "filename.h"
|
||||
#include "load_dso.h"
|
||||
|
@ -12,7 +12,7 @@
|
||||
*/
|
||||
|
||||
#include "shaderPool.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
#include "config_express.h"
|
||||
#include "virtualFileSystem.h"
|
||||
#include "loader.h"
|
||||
|
@ -14,7 +14,7 @@
|
||||
#include "physxEnums.h"
|
||||
|
||||
#include "string_utils.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
|
||||
ostream &
|
||||
operator << (ostream &out, PhysxEnums::PhysxUpAxis axis) {
|
||||
|
@ -16,7 +16,7 @@
|
||||
#ifdef HAVE_FREETYPE
|
||||
|
||||
#include "config_pnmtext.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
#include "config_express.h"
|
||||
#include "virtualFileSystem.h"
|
||||
#include "nurbsCurveEvaluator.h"
|
||||
|
@ -1,5 +1,5 @@
|
||||
set(P3PSTATCLIENT_HEADERS
|
||||
config_pstats.h pStatClient.I pStatClient.h
|
||||
config_pstatclient.h pStatClient.I pStatClient.h
|
||||
pStatClientImpl.I pStatClientImpl.h
|
||||
pStatClientVersion.I
|
||||
pStatClientVersion.h pStatClientControlMessage.h
|
||||
@ -10,7 +10,7 @@ set(P3PSTATCLIENT_HEADERS
|
||||
pStatTimer.I pStatTimer.h)
|
||||
|
||||
set(P3PSTATCLIENT_SOURCES
|
||||
config_pstats.cxx pStatClient.cxx pStatClientImpl.cxx
|
||||
config_pstatclient.cxx pStatClient.cxx pStatClientImpl.cxx
|
||||
pStatClientVersion.cxx
|
||||
pStatClientControlMessage.cxx
|
||||
pStatCollector.cxx
|
||||
@ -28,3 +28,4 @@ target_interrogate(p3pstatclient ALL)
|
||||
|
||||
install(TARGETS p3pstatclient DESTINATION lib)
|
||||
install(FILES ${P3PSTATCLIENT_HEADERS} DESTINATION include/panda3d)
|
||||
install(FILES config_pstats.h DESTINATION include/panda3d)
|
||||
|
@ -6,12 +6,12 @@
|
||||
* license. You should have received a copy of this license along
|
||||
* with this source code in a file named "LICENSE."
|
||||
*
|
||||
* @file config_pstats.cxx
|
||||
* @file config_pstatclient.cxx
|
||||
* @author drose
|
||||
* @date 2000-07-09
|
||||
*/
|
||||
|
||||
#include "config_pstats.h"
|
||||
#include "config_pstatclient.h"
|
||||
|
||||
#include "dconfig.h"
|
||||
|
||||
@ -19,10 +19,10 @@
|
||||
#error Buildsystem error: BUILDING_PANDA_PSTATCLIENT not defined
|
||||
#endif
|
||||
|
||||
ConfigureDef(config_pstats);
|
||||
ConfigureDef(config_pstatclient);
|
||||
NotifyCategoryDef(pstats, "");
|
||||
|
||||
ConfigureFn(config_pstats) {
|
||||
ConfigureFn(config_pstatclient) {
|
||||
init_libpstatclient();
|
||||
}
|
||||
|
50
panda/src/pstatclient/config_pstatclient.h
Normal file
50
panda/src/pstatclient/config_pstatclient.h
Normal file
@ -0,0 +1,50 @@
|
||||
/**
|
||||
* PANDA 3D SOFTWARE
|
||||
* Copyright (c) Carnegie Mellon University. All rights reserved.
|
||||
*
|
||||
* All use of this software is subject to the terms of the revised BSD
|
||||
* license. You should have received a copy of this license along
|
||||
* with this source code in a file named "LICENSE."
|
||||
*
|
||||
* @file config_pstatclient.h
|
||||
* @author drose
|
||||
* @date 2000-07-09
|
||||
*/
|
||||
|
||||
#ifndef CONFIG_PSTATS_H
|
||||
#define CONFIG_PSTATS_H
|
||||
|
||||
#include "pandabase.h"
|
||||
|
||||
#include "notifyCategoryProxy.h"
|
||||
#include "dconfig.h"
|
||||
#include "configVariableString.h"
|
||||
#include "configVariableInt.h"
|
||||
#include "configVariableDouble.h"
|
||||
#include "configVariableBool.h"
|
||||
|
||||
// Configure variables for pstats package.
|
||||
|
||||
ConfigureDecl(config_pstatclient, EXPCL_PANDA_PSTATCLIENT, EXPTP_PANDA_PSTATCLIENT);
|
||||
NotifyCategoryDecl(pstats, EXPCL_PANDA_PSTATCLIENT, EXPTP_PANDA_PSTATCLIENT);
|
||||
|
||||
extern EXPCL_PANDA_PSTATCLIENT ConfigVariableString pstats_name;
|
||||
extern EXPCL_PANDA_PSTATCLIENT ConfigVariableDouble pstats_max_rate;
|
||||
extern EXPCL_PANDA_PSTATCLIENT ConfigVariableBool pstats_threaded_write;
|
||||
extern EXPCL_PANDA_PSTATCLIENT ConfigVariableInt pstats_max_queue_size;
|
||||
extern EXPCL_PANDA_PSTATCLIENT ConfigVariableDouble pstats_tcp_ratio;
|
||||
|
||||
extern EXPCL_PANDA_PSTATCLIENT ConfigVariableString pstats_host;
|
||||
extern EXPCL_PANDA_PSTATCLIENT ConfigVariableInt pstats_port;
|
||||
extern EXPCL_PANDA_PSTATCLIENT ConfigVariableDouble pstats_target_frame_rate;
|
||||
extern EXPCL_PANDA_PSTATCLIENT ConfigVariableBool pstats_gpu_timing;
|
||||
|
||||
extern EXPCL_PANDA_PSTATCLIENT ConfigVariableBool pstats_scroll_mode;
|
||||
extern EXPCL_PANDA_PSTATCLIENT ConfigVariableDouble pstats_history;
|
||||
extern EXPCL_PANDA_PSTATCLIENT ConfigVariableDouble pstats_average_time;
|
||||
|
||||
extern EXPCL_PANDA_PSTATCLIENT ConfigVariableBool pstats_mem_other;
|
||||
|
||||
extern EXPCL_PANDA_PSTATCLIENT void init_libpstatclient();
|
||||
|
||||
#endif
|
@ -1,50 +1,2 @@
|
||||
/**
|
||||
* PANDA 3D SOFTWARE
|
||||
* Copyright (c) Carnegie Mellon University. All rights reserved.
|
||||
*
|
||||
* All use of this software is subject to the terms of the revised BSD
|
||||
* license. You should have received a copy of this license along
|
||||
* with this source code in a file named "LICENSE."
|
||||
*
|
||||
* @file config_pstats.h
|
||||
* @author drose
|
||||
* @date 2000-07-09
|
||||
*/
|
||||
|
||||
#ifndef CONFIG_PSTATS_H
|
||||
#define CONFIG_PSTATS_H
|
||||
|
||||
#include "pandabase.h"
|
||||
|
||||
#include "notifyCategoryProxy.h"
|
||||
#include "dconfig.h"
|
||||
#include "configVariableString.h"
|
||||
#include "configVariableInt.h"
|
||||
#include "configVariableDouble.h"
|
||||
#include "configVariableBool.h"
|
||||
|
||||
// Configure variables for pstats package.
|
||||
|
||||
ConfigureDecl(config_pstats, EXPCL_PANDA_PSTATCLIENT, EXPTP_PANDA_PSTATCLIENT);
|
||||
NotifyCategoryDecl(pstats, EXPCL_PANDA_PSTATCLIENT, EXPTP_PANDA_PSTATCLIENT);
|
||||
|
||||
extern EXPCL_PANDA_PSTATCLIENT ConfigVariableString pstats_name;
|
||||
extern EXPCL_PANDA_PSTATCLIENT ConfigVariableDouble pstats_max_rate;
|
||||
extern EXPCL_PANDA_PSTATCLIENT ConfigVariableBool pstats_threaded_write;
|
||||
extern EXPCL_PANDA_PSTATCLIENT ConfigVariableInt pstats_max_queue_size;
|
||||
extern EXPCL_PANDA_PSTATCLIENT ConfigVariableDouble pstats_tcp_ratio;
|
||||
|
||||
extern EXPCL_PANDA_PSTATCLIENT ConfigVariableString pstats_host;
|
||||
extern EXPCL_PANDA_PSTATCLIENT ConfigVariableInt pstats_port;
|
||||
extern EXPCL_PANDA_PSTATCLIENT ConfigVariableDouble pstats_target_frame_rate;
|
||||
extern EXPCL_PANDA_PSTATCLIENT ConfigVariableBool pstats_gpu_timing;
|
||||
|
||||
extern EXPCL_PANDA_PSTATCLIENT ConfigVariableBool pstats_scroll_mode;
|
||||
extern EXPCL_PANDA_PSTATCLIENT ConfigVariableDouble pstats_history;
|
||||
extern EXPCL_PANDA_PSTATCLIENT ConfigVariableDouble pstats_average_time;
|
||||
|
||||
extern EXPCL_PANDA_PSTATCLIENT ConfigVariableBool pstats_mem_other;
|
||||
|
||||
extern EXPCL_PANDA_PSTATCLIENT void init_libpstatclient();
|
||||
|
||||
#endif
|
||||
// This file to remain during the whole 1.10.x cycle; remove after that.
|
||||
#error config_pstats.h has been renamed to config_pstatclient.h - please update your project.
|
||||
|
@ -1,5 +1,5 @@
|
||||
|
||||
#include "config_pstats.cxx"
|
||||
#include "config_pstatclient.cxx"
|
||||
#include "pStatClient.cxx"
|
||||
#include "pStatClientImpl.cxx"
|
||||
#include "pStatClientVersion.cxx"
|
||||
|
@ -21,7 +21,7 @@
|
||||
#include "pStatServerControlMessage.h"
|
||||
#include "pStatCollector.h"
|
||||
#include "pStatThread.h"
|
||||
#include "config_pstats.h"
|
||||
#include "config_pstatclient.h"
|
||||
#include "pStatProperties.h"
|
||||
#include "thread.h"
|
||||
#include "clockObject.h"
|
||||
|
@ -11,7 +11,7 @@
|
||||
* @date 2000-07-09
|
||||
*/
|
||||
|
||||
#include "config_pstats.h"
|
||||
#include "config_pstatclient.h"
|
||||
#include "pStatClientControlMessage.h"
|
||||
#include "pStatClientVersion.h"
|
||||
|
||||
|
@ -21,7 +21,7 @@
|
||||
#include "pStatServerControlMessage.h"
|
||||
#include "pStatCollector.h"
|
||||
#include "pStatThread.h"
|
||||
#include "config_pstats.h"
|
||||
#include "config_pstatclient.h"
|
||||
#include "pStatProperties.h"
|
||||
#include "cmath.h"
|
||||
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
#include "pStatFrameData.h"
|
||||
#include "pStatClientVersion.h"
|
||||
#include "config_pstats.h"
|
||||
#include "config_pstatclient.h"
|
||||
|
||||
#include "datagram.h"
|
||||
#include "datagramIterator.h"
|
||||
|
@ -14,7 +14,7 @@
|
||||
#include "pStatProperties.h"
|
||||
#include "pStatCollectorDef.h"
|
||||
#include "pStatClient.h"
|
||||
#include "config_pstats.h"
|
||||
#include "config_pstatclient.h"
|
||||
#include "configVariableBool.h"
|
||||
#include "configVariableColor.h"
|
||||
#include "configVariableDouble.h"
|
||||
|
@ -11,7 +11,7 @@
|
||||
* @date 2000-07-09
|
||||
*/
|
||||
|
||||
#include "config_pstats.h"
|
||||
#include "config_pstatclient.h"
|
||||
#include "pStatServerControlMessage.h"
|
||||
|
||||
#include "datagram.h"
|
||||
|
@ -11,7 +11,7 @@
|
||||
* @date 2000-07-09
|
||||
*/
|
||||
|
||||
#include "config_pstats.h"
|
||||
#include "config_pstatclient.h"
|
||||
#include "pStatClient.h"
|
||||
#include "pStatCollector.h"
|
||||
#include "thread.h"
|
||||
|
@ -23,7 +23,7 @@ set(P3PUTIL_HEADERS
|
||||
copyOnWriteObject.h copyOnWriteObject.I
|
||||
copyOnWritePointer.h copyOnWritePointer.I
|
||||
compareTo.I compareTo.h
|
||||
config_util.N config_util.h configurable.h
|
||||
config_putil.N config_putil.h configurable.h
|
||||
cPointerCallbackObject.h cPointerCallbackObject.I
|
||||
datagramBuffer.I datagramBuffer.h
|
||||
datagramInputFile.I datagramInputFile.h
|
||||
@ -83,7 +83,7 @@ set(P3PUTIL_SOURCES
|
||||
colorSpace.cxx
|
||||
copyOnWriteObject.cxx
|
||||
copyOnWritePointer.cxx
|
||||
config_util.cxx configurable.cxx
|
||||
config_putil.cxx configurable.cxx
|
||||
cPointerCallbackObject.cxx
|
||||
datagramBuffer.cxx
|
||||
datagramInputFile.cxx datagramOutputFile.cxx
|
||||
@ -131,6 +131,7 @@ target_interrogate(p3putil ALL EXTENSIONS ${P3PUTIL_IGATEEXT})
|
||||
|
||||
install(TARGETS p3putil DESTINATION lib)
|
||||
install(FILES ${P3PUTIL_HEADERS} DESTINATION include/panda3d)
|
||||
install(FILES config_util.h DESTINATION include/panda3d)
|
||||
|
||||
#begin test_bin_target
|
||||
#define TARGET test_bamRead
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
#include "autoTextureScale.h"
|
||||
#include "string_utils.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
|
||||
ostream &
|
||||
operator << (ostream &out, AutoTextureScale ats) {
|
||||
|
@ -18,7 +18,7 @@
|
||||
#include "hashVal.h"
|
||||
#include "datagramInputFile.h"
|
||||
#include "datagramOutputFile.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
#include "bam.h"
|
||||
#include "typeRegistry.h"
|
||||
#include "string_utils.h"
|
||||
|
@ -14,7 +14,7 @@
|
||||
#include "bamCacheIndex.h"
|
||||
#include "bamReader.h"
|
||||
#include "bamWriter.h"
|
||||
#include "config_util.h" // util_cat
|
||||
#include "config_putil.h" // util_cat
|
||||
#include "indent.h"
|
||||
#include <algorithm>
|
||||
|
||||
|
@ -17,7 +17,7 @@
|
||||
#include "virtualFileSystem.h"
|
||||
#include "virtualFile.h"
|
||||
#include "indent.h"
|
||||
#include "config_util.h" // util_cat
|
||||
#include "config_putil.h" // util_cat
|
||||
|
||||
TypeHandle BamCacheRecord::_type_handle;
|
||||
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
#include "bamEnums.h"
|
||||
#include "string_utils.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
|
||||
ostream &
|
||||
operator << (ostream &out, BamEnums::BamEndian be) {
|
||||
|
@ -17,7 +17,7 @@
|
||||
#include "bam.h"
|
||||
#include "bamReader.h"
|
||||
#include "datagramIterator.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
#include "pipelineCyclerBase.h"
|
||||
|
||||
TypeHandle BamReaderAuxData::_type_handle;
|
||||
|
@ -12,7 +12,7 @@
|
||||
*/
|
||||
|
||||
#include "bamReader_ext.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
#include "pythonThread.h"
|
||||
|
||||
#ifdef HAVE_PYTHON
|
||||
|
@ -15,7 +15,7 @@
|
||||
#include "pnotify.h"
|
||||
|
||||
#include "typedWritable.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
#include "bam.h"
|
||||
#include "bamWriter.h"
|
||||
#include "bamReader.h"
|
||||
@ -94,6 +94,10 @@ BamWriter::
|
||||
for (si = _state_map.begin(); si != _state_map.end(); ++si) {
|
||||
TypedWritable *object = (TypedWritable *)(*si).first;
|
||||
object->remove_bam_writer(this);
|
||||
|
||||
if ((*si).second._refcount != nullptr) {
|
||||
unref_delete((*si).second._refcount);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -529,6 +533,9 @@ object_destructs(TypedWritable *object) {
|
||||
// we're in trouble when we do write it out.
|
||||
nassertv(!(*si).second._written_seq.is_initial());
|
||||
|
||||
// This cannot be called if we are still holding a reference to it.
|
||||
nassertv((*si).second._refcount == nullptr);
|
||||
|
||||
int object_id = (*si).second._object_id;
|
||||
_freed_object_ids.push_back(object_id);
|
||||
|
||||
@ -606,8 +613,10 @@ enqueue_object(const TypedWritable *object) {
|
||||
// No, it hasn't, so assign it the next number in sequence arbitrarily.
|
||||
object_id = _next_object_id;
|
||||
|
||||
bool inserted =
|
||||
_state_map.insert(StateMap::value_type(object, StoreState(_next_object_id))).second;
|
||||
StateMap::iterator si;
|
||||
bool inserted;
|
||||
tie(si, inserted) =
|
||||
_state_map.insert(StateMap::value_type(object, StoreState(_next_object_id)));
|
||||
nassertr(inserted, false);
|
||||
|
||||
// Store ourselves on the TypedWritable so that we get notified when it
|
||||
@ -615,6 +624,14 @@ enqueue_object(const TypedWritable *object) {
|
||||
(const_cast<TypedWritable*>(object))->add_bam_writer(this);
|
||||
_next_object_id++;
|
||||
|
||||
// Increase the reference count if this inherits from ReferenceCount,
|
||||
// until we get a chance to write this object for the first time.
|
||||
const ReferenceCount *rc = ((TypedWritable *)object)->as_reference_count();
|
||||
if (rc != nullptr) {
|
||||
rc->ref();
|
||||
(*si).second._refcount = rc;
|
||||
}
|
||||
|
||||
} else {
|
||||
// Yes, it has; get the object ID.
|
||||
object_id = (*si).second._object_id;
|
||||
@ -703,6 +720,15 @@ flush_queue() {
|
||||
(*si).second._written_seq = _writing_seq;
|
||||
(*si).second._modified = object->get_bam_modified();
|
||||
|
||||
// Now release any reference we hold to it, so that it may destruct.
|
||||
const ReferenceCount *rc = (*si).second._refcount;
|
||||
if (rc != nullptr) {
|
||||
// We need to assign this pointer to null before deleting the object,
|
||||
// since that may end up calling object_destructs.
|
||||
(*si).second._refcount = nullptr;
|
||||
unref_delete(rc);
|
||||
}
|
||||
|
||||
} else {
|
||||
// On subsequent times when we write a particular object, we write
|
||||
// simply TypeHandle::none(), followed by the object ID. The occurrence
|
||||
|
@ -140,8 +140,9 @@ private:
|
||||
int _object_id;
|
||||
UpdateSeq _written_seq;
|
||||
UpdateSeq _modified;
|
||||
const ReferenceCount *_refcount;
|
||||
|
||||
StoreState(int object_id) : _object_id(object_id) {}
|
||||
StoreState(int object_id) : _object_id(object_id), _refcount(nullptr) {}
|
||||
};
|
||||
typedef phash_map<const TypedWritable *, StoreState, pointer_hash> StateMap;
|
||||
StateMap _state_map;
|
||||
|
@ -12,7 +12,7 @@
|
||||
*/
|
||||
|
||||
#include "buttonRegistry.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
|
@ -12,7 +12,7 @@
|
||||
*/
|
||||
|
||||
#include "clockObject.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
#include "configVariableEnum.h"
|
||||
#include "string_utils.h"
|
||||
#include "thread.h"
|
||||
|
@ -12,7 +12,7 @@
|
||||
*/
|
||||
|
||||
#include "colorSpace.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
#include "configVariableEnum.h"
|
||||
#include "string_utils.h"
|
||||
|
||||
|
@ -6,12 +6,12 @@
|
||||
* license. You should have received a copy of this license along
|
||||
* with this source code in a file named "LICENSE."
|
||||
*
|
||||
* @file config_util.cxx
|
||||
* @file config_putil.cxx
|
||||
* @author cary
|
||||
* @date 2000-01-04
|
||||
*/
|
||||
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
#include "animInterface.h"
|
||||
#include "bamCacheIndex.h"
|
||||
#include "bamCacheRecord.h"
|
||||
@ -51,7 +51,7 @@
|
||||
#error Buildsystem error: BUILDING_PANDA_PUTIL not defined
|
||||
#endif
|
||||
|
||||
ConfigureDef(config_util);
|
||||
ConfigureDef(config_putil);
|
||||
NotifyCategoryDef(util, "");
|
||||
NotifyCategoryDef(bam, util_cat);
|
||||
|
||||
@ -88,7 +88,7 @@ ConfigVariableEnum<BamEnums::BamTextureMode> bam_texture_mode
|
||||
PRC_DESC("Set this to specify how textures should be written into Bam files."
|
||||
"See the panda source or documentation for available options."));
|
||||
|
||||
ConfigureFn(config_util) {
|
||||
ConfigureFn(config_putil) {
|
||||
init_libputil();
|
||||
}
|
||||
|
55
panda/src/putil/config_putil.h
Normal file
55
panda/src/putil/config_putil.h
Normal file
@ -0,0 +1,55 @@
|
||||
/**
|
||||
* PANDA 3D SOFTWARE
|
||||
* Copyright (c) Carnegie Mellon University. All rights reserved.
|
||||
*
|
||||
* All use of this software is subject to the terms of the revised BSD
|
||||
* license. You should have received a copy of this license along
|
||||
* with this source code in a file named "LICENSE."
|
||||
*
|
||||
* @file config_putil.h
|
||||
* @author cary
|
||||
* @date 2000-01-04
|
||||
*/
|
||||
|
||||
#ifndef __CONFIG_UTIL_H__
|
||||
#define __CONFIG_UTIL_H__
|
||||
|
||||
#include "pandabase.h"
|
||||
#include "notifyCategoryProxy.h"
|
||||
#include "configVariableSearchPath.h"
|
||||
#include "configVariableEnum.h"
|
||||
#include "configVariableDouble.h"
|
||||
#include "bamEnums.h"
|
||||
#include "dconfig.h"
|
||||
|
||||
class DSearchPath;
|
||||
|
||||
ConfigureDecl(config_putil, EXPCL_PANDA_PUTIL, EXPTP_PANDA_PUTIL);
|
||||
NotifyCategoryDecl(util, EXPCL_PANDA_PUTIL, EXPTP_PANDA_PUTIL);
|
||||
NotifyCategoryDecl(bam, EXPCL_PANDA_PUTIL, EXPTP_PANDA_PUTIL);
|
||||
|
||||
// Actually, we can't determine this config variable the normal way, because
|
||||
// we must be able to access it at static init time. Instead of declaring it
|
||||
// a global constant, we'll make it a member of MemoryUsage. extern
|
||||
// EXPCL_PANDA_PUTIL const bool track_memory_usage;
|
||||
|
||||
extern EXPCL_PANDA_PUTIL ConfigVariableInt bam_version;
|
||||
extern EXPCL_PANDA_PUTIL ConfigVariableEnum<BamEnums::BamEndian> bam_endian;
|
||||
extern EXPCL_PANDA_PUTIL ConfigVariableBool bam_stdfloat_double;
|
||||
extern EXPCL_PANDA_PUTIL ConfigVariableEnum<BamEnums::BamTextureMode> bam_texture_mode;
|
||||
|
||||
BEGIN_PUBLISH
|
||||
EXPCL_PANDA_PUTIL ConfigVariableSearchPath &get_model_path();
|
||||
EXPCL_PANDA_PUTIL ConfigVariableSearchPath &get_plugin_path();
|
||||
END_PUBLISH
|
||||
|
||||
extern ConfigVariableDouble sleep_precision;
|
||||
|
||||
extern EXPCL_PANDA_PUTIL ConfigVariableBool preload_textures;
|
||||
extern EXPCL_PANDA_PUTIL ConfigVariableBool preload_simple_textures;
|
||||
extern EXPCL_PANDA_PUTIL ConfigVariableBool compressed_textures;
|
||||
extern EXPCL_PANDA_PUTIL ConfigVariableBool cache_check_timestamps;
|
||||
|
||||
extern EXPCL_PANDA_PUTIL void init_libputil();
|
||||
|
||||
#endif /* __CONFIG_UTIL_H__ */
|
@ -1,55 +1,2 @@
|
||||
/**
|
||||
* PANDA 3D SOFTWARE
|
||||
* Copyright (c) Carnegie Mellon University. All rights reserved.
|
||||
*
|
||||
* All use of this software is subject to the terms of the revised BSD
|
||||
* license. You should have received a copy of this license along
|
||||
* with this source code in a file named "LICENSE."
|
||||
*
|
||||
* @file config_util.h
|
||||
* @author cary
|
||||
* @date 2000-01-04
|
||||
*/
|
||||
|
||||
#ifndef __CONFIG_UTIL_H__
|
||||
#define __CONFIG_UTIL_H__
|
||||
|
||||
#include "pandabase.h"
|
||||
#include "notifyCategoryProxy.h"
|
||||
#include "configVariableSearchPath.h"
|
||||
#include "configVariableEnum.h"
|
||||
#include "configVariableDouble.h"
|
||||
#include "bamEnums.h"
|
||||
#include "dconfig.h"
|
||||
|
||||
class DSearchPath;
|
||||
|
||||
ConfigureDecl(config_util, EXPCL_PANDA_PUTIL, EXPTP_PANDA_PUTIL);
|
||||
NotifyCategoryDecl(util, EXPCL_PANDA_PUTIL, EXPTP_PANDA_PUTIL);
|
||||
NotifyCategoryDecl(bam, EXPCL_PANDA_PUTIL, EXPTP_PANDA_PUTIL);
|
||||
|
||||
// Actually, we can't determine this config variable the normal way, because
|
||||
// we must be able to access it at static init time. Instead of declaring it
|
||||
// a global constant, we'll make it a member of MemoryUsage. extern
|
||||
// EXPCL_PANDA_PUTIL const bool track_memory_usage;
|
||||
|
||||
extern EXPCL_PANDA_PUTIL ConfigVariableInt bam_version;
|
||||
extern EXPCL_PANDA_PUTIL ConfigVariableEnum<BamEnums::BamEndian> bam_endian;
|
||||
extern EXPCL_PANDA_PUTIL ConfigVariableBool bam_stdfloat_double;
|
||||
extern EXPCL_PANDA_PUTIL ConfigVariableEnum<BamEnums::BamTextureMode> bam_texture_mode;
|
||||
|
||||
BEGIN_PUBLISH
|
||||
EXPCL_PANDA_PUTIL ConfigVariableSearchPath &get_model_path();
|
||||
EXPCL_PANDA_PUTIL ConfigVariableSearchPath &get_plugin_path();
|
||||
END_PUBLISH
|
||||
|
||||
extern ConfigVariableDouble sleep_precision;
|
||||
|
||||
extern EXPCL_PANDA_PUTIL ConfigVariableBool preload_textures;
|
||||
extern EXPCL_PANDA_PUTIL ConfigVariableBool preload_simple_textures;
|
||||
extern EXPCL_PANDA_PUTIL ConfigVariableBool compressed_textures;
|
||||
extern EXPCL_PANDA_PUTIL ConfigVariableBool cache_check_timestamps;
|
||||
|
||||
extern EXPCL_PANDA_PUTIL void init_libputil();
|
||||
|
||||
#endif /* __CONFIG_UTIL_H__ */
|
||||
// This file to remain during the whole 1.10.x cycle; remove after that.
|
||||
#error config_util.h has been renamed to config_putil.h - please update your project.
|
||||
|
@ -12,7 +12,7 @@
|
||||
*/
|
||||
|
||||
#include "copyOnWritePointer.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
#include "config_pipeline.h"
|
||||
|
||||
#ifdef COW_THREADED
|
||||
|
@ -16,7 +16,7 @@
|
||||
#include "numeric_types.h"
|
||||
#include "datagramIterator.h"
|
||||
#include "profileTimer.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
#include "config_express.h"
|
||||
#include "virtualFileSystem.h"
|
||||
#include "streamReader.h"
|
||||
|
@ -21,7 +21,7 @@
|
||||
#include "fileReference.h"
|
||||
#include "virtualFile.h"
|
||||
#include "virtualFileSystem.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
|
||||
/**
|
||||
* This class can be used to write a binary file that consists of an arbitrary
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
#include "factoryBase.h"
|
||||
#include "indent.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -12,7 +12,7 @@
|
||||
*/
|
||||
|
||||
#include "globalPointerRegistry.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
|
||||
// In general, we use the util_cat->info() syntax in this file (instead of
|
||||
// util_cat.info()), because much of this work is done at static init time,
|
||||
|
@ -84,7 +84,7 @@ DEFINE_KEYBD_BUTTON_HANDLE(rmeta)
|
||||
|
||||
/**
|
||||
* This is intended to be called only once, by the static initialization
|
||||
* performed in config_util.cxx.
|
||||
* performed in config_putil.cxx.
|
||||
*/
|
||||
void KeyboardButton::
|
||||
init_keyboard_buttons() {
|
||||
|
@ -16,7 +16,7 @@
|
||||
#include "configVariableManager.h"
|
||||
#include "virtualFileSystem.h"
|
||||
#include "config_express.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
#include "hashVal.h"
|
||||
|
||||
/**
|
||||
|
@ -12,7 +12,7 @@
|
||||
*/
|
||||
|
||||
#include "loaderOptions.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
#include "indent.h"
|
||||
|
||||
/**
|
||||
@ -25,7 +25,7 @@ LoaderOptions(int flags) :
|
||||
_texture_num_views(0),
|
||||
_auto_texture_scale(ATS_unspecified)
|
||||
{
|
||||
// Shadowing the variables in config_util for static init ordering issues.
|
||||
// Shadowing the variables in config_putil for static init ordering issues.
|
||||
static ConfigVariableBool *preload_textures;
|
||||
static ConfigVariableBool *preload_simple_textures;
|
||||
static ConfigVariableBool *compressed_textures;
|
||||
|
@ -129,7 +129,7 @@ is_mouse_button(ButtonHandle button) {
|
||||
|
||||
/**
|
||||
* This is intended to be called only once, by the static initialization
|
||||
* performed in config_util.cxx.
|
||||
* performed in config_putil.cxx.
|
||||
*/
|
||||
void MouseButton::
|
||||
init_mouse_buttons() {
|
||||
|
@ -17,7 +17,7 @@
|
||||
#include "callbackObject.cxx"
|
||||
#include "clockObject.cxx"
|
||||
#include "colorSpace.cxx"
|
||||
#include "config_util.cxx"
|
||||
#include "config_putil.cxx"
|
||||
#include "configurable.cxx"
|
||||
#include "copyOnWriteObject.cxx"
|
||||
#include "copyOnWritePointer.cxx"
|
||||
|
@ -18,7 +18,7 @@
|
||||
#include "py_panda.h"
|
||||
#include "pythonThread.h"
|
||||
#include "callbackData.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
|
||||
TypeHandle PythonCallbackObject::_type_handle;
|
||||
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
#include "pandabase.h"
|
||||
#include "pvector.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
|
||||
/**
|
||||
* Entry in the SimpleHashMap.
|
||||
|
@ -12,7 +12,7 @@
|
||||
*/
|
||||
|
||||
#include "filename.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
|
||||
#include "dSearchPath.h"
|
||||
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
#include "pandabase.h"
|
||||
#include "pvector.h"
|
||||
#include "config_util.h"
|
||||
#include "config_putil.h"
|
||||
#include "weakPointerTo.h"
|
||||
|
||||
/**
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user