41 lines
1.1 KiB
Python
41 lines
1.1 KiB
Python
from ldm_patched.modules.model_patcher import ModelPatcher
|
|
|
|
|
|
og_model_patcher_init = ModelPatcher.__init__
|
|
og_model_patcher_clone = ModelPatcher.clone
|
|
|
|
|
|
def patched_model_patcher_init(self, *args, **kwargs):
|
|
h = og_model_patcher_init(self, *args, **kwargs)
|
|
self.controlnet_linked_list = None
|
|
return h
|
|
|
|
|
|
def patched_model_patcher_clone(self):
|
|
cloned = og_model_patcher_clone(self)
|
|
cloned.controlnet_linked_list = self.controlnet_linked_list
|
|
return cloned
|
|
|
|
|
|
def model_patcher_add_patched_controlnet(self, cnet):
|
|
cnet.set_previous_controlnet(self.controlnet_linked_list)
|
|
self.controlnet_linked_list = cnet
|
|
return
|
|
|
|
|
|
def model_patcher_list_controlnets(self):
|
|
results = []
|
|
pointer = self.controlnet_linked_list
|
|
while pointer is not None:
|
|
results.append(pointer)
|
|
pointer = pointer.previous_controlnet
|
|
return results
|
|
|
|
|
|
def patch_all_basics():
|
|
ModelPatcher.__init__ = patched_model_patcher_init
|
|
ModelPatcher.clone = patched_model_patcher_clone
|
|
ModelPatcher.add_patched_controlnet = model_patcher_add_patched_controlnet
|
|
ModelPatcher.list_controlnets = model_patcher_list_controlnets
|
|
return
|