Various fixes

This commit is contained in:
Ilya Laktyushin 2023-07-18 00:26:38 +02:00
parent 5afa9250aa
commit 47fbbbc026
4 changed files with 9 additions and 36 deletions

View File

@ -215,13 +215,17 @@ public final class DrawingStickerEntityView: DrawingEntityView {
context.draw(image.cgImage!, in: imageRect) context.draw(image.cgImage!, in: imageRect)
} }
var synchronous = false
if case let .image(_, type) = self.stickerEntity.content {
synchronous = type == .dualPhoto
}
self.imageNode.setSignal(.single({ arguments -> DrawingContext? in self.imageNode.setSignal(.single({ arguments -> DrawingContext? in
let context = DrawingContext(size: arguments.drawingSize, opaque: false, clear: true) let context = DrawingContext(size: arguments.drawingSize, opaque: false, clear: true)
context?.withFlippedContext({ ctx in context?.withFlippedContext({ ctx in
drawImageWithOrientation(image, size: arguments.drawingSize, in: ctx) drawImageWithOrientation(image, size: arguments.drawingSize, in: ctx)
}) })
return context return context
})) }), attemptSynchronously: synchronous)
self.setNeedsLayout() self.setNeedsLayout()
} else if case let .video(videoPath, image, _) = self.stickerEntity.content { } else if case let .video(videoPath, image, _) = self.stickerEntity.content {
let url = URL(fileURLWithPath: videoPath) let url = URL(fileURLWithPath: videoPath)

View File

@ -663,13 +663,9 @@ final class VideoInputScalePass: RenderPass {
} }
func process(input: MTLTexture, secondInput: MTLTexture?, timestamp: CMTime, device: MTLDevice, commandBuffer: MTLCommandBuffer) -> MTLTexture? { func process(input: MTLTexture, secondInput: MTLTexture?, timestamp: CMTime, device: MTLDevice, commandBuffer: MTLCommandBuffer) -> MTLTexture? {
#if targetEnvironment(simulator)
#else
guard max(input.width, input.height) > 1920 || secondInput != nil else { guard max(input.width, input.height) > 1920 || secondInput != nil else {
return input return input
} }
#endif
let scaledSize = CGSize(width: input.width, height: input.height).fitted(CGSize(width: 1920.0, height: 1920.0)) let scaledSize = CGSize(width: input.width, height: input.height).fitted(CGSize(width: 1920.0, height: 1920.0))
let width: Int let width: Int
@ -718,10 +714,6 @@ final class VideoInputScalePass: RenderPass {
renderCommandEncoder.setRenderPipelineState(self.mainPipelineState!) renderCommandEncoder.setRenderPipelineState(self.mainPipelineState!)
#if targetEnvironment(simulator)
let secondInput = input
#endif
let (mainVideoState, additionalVideoState, transitionVideoState) = self.transitionState(for: timestamp, mainInput: input, additionalInput: secondInput) let (mainVideoState, additionalVideoState, transitionVideoState) = self.transitionState(for: timestamp, mainInput: input, additionalInput: secondInput)
if let transitionVideoState { if let transitionVideoState {

View File

@ -1974,25 +1974,6 @@ public final class MediaEditorScreen: ViewController, UIDropInteractionDelegate
} }
} }
} }
#if targetEnvironment(simulator)
if case let .asset(asset) = subject, asset.mediaType == .video {
let videoEntity = DrawingStickerEntity(content: .dualVideoReference)
videoEntity.referenceDrawingSize = storyDimensions
videoEntity.scale = 1.625
videoEntity.position = PIPPosition.topRight.getPosition(storyDimensions)
self.entitiesView.add(videoEntity, announce: false)
mediaEditor.setAdditionalVideo("", positionChanges: [VideoPositionChange(additional: false, timestamp: 0.0), VideoPositionChange(additional: true, timestamp: 3.0)])
mediaEditor.setAdditionalVideoPosition(videoEntity.position, scale: videoEntity.scale, rotation: videoEntity.rotation)
if let entityView = self.entitiesView.getView(for: videoEntity.uuid) as? DrawingStickerEntityView {
entityView.updated = { [weak videoEntity, weak self] in
if let self, let videoEntity {
self.mediaEditor?.setAdditionalVideoPosition(videoEntity.position, scale: videoEntity.scale, rotation: videoEntity.rotation)
}
}
}
}
#endif
self.gradientColorsDisposable = mediaEditor.gradientColors.start(next: { [weak self] colors in self.gradientColorsDisposable = mediaEditor.gradientColors.start(next: { [weak self] colors in
if let self, let colors { if let self, let colors {

View File

@ -3481,14 +3481,10 @@ public final class StoryItemSetContainerComponent: Component {
let entities = generateChatInputTextEntities(caption) let entities = generateChatInputTextEntities(caption)
var updatedText: String? var updatedText: String?
var updatedEntities: [MessageTextEntity]? var updatedEntities: [MessageTextEntity]?
var updatedPrivacy: EngineStoryPrivacy?
if caption.string != item.text || entities != item.entities { if caption.string != item.text || entities != item.entities {
updatedText = caption.string updatedText = caption.string
updatedEntities = entities updatedEntities = entities
} }
if privacy.privacy != item.privacy {
updatedPrivacy = privacy.privacy
}
if let mediaResult { if let mediaResult {
switch mediaResult { switch mediaResult {
@ -3496,7 +3492,7 @@ public final class StoryItemSetContainerComponent: Component {
updateProgressImpl?(0.0) updateProgressImpl?(0.0)
if let imageData = compressImageToJPEG(image, quality: 0.7) { if let imageData = compressImageToJPEG(image, quality: 0.7) {
updateDisposable.set((context.engine.messages.editStory(id: id, media: .image(dimensions: dimensions, data: imageData, stickers: stickers), text: updatedText, entities: updatedEntities, privacy: updatedPrivacy) updateDisposable.set((context.engine.messages.editStory(id: id, media: .image(dimensions: dimensions, data: imageData, stickers: stickers), text: updatedText, entities: updatedEntities, privacy: nil)
|> deliverOnMainQueue).start(next: { [weak self] result in |> deliverOnMainQueue).start(next: { [weak self] result in
guard let self else { guard let self else {
return return
@ -3544,7 +3540,7 @@ public final class StoryItemSetContainerComponent: Component {
} }
} }
updateDisposable.set((context.engine.messages.editStory(id: id, media: .video(dimensions: dimensions, duration: duration, resource: resource, firstFrameFile: firstFrameFile, stickers: stickers), text: updatedText, entities: updatedEntities, privacy: updatedPrivacy) updateDisposable.set((context.engine.messages.editStory(id: id, media: .video(dimensions: dimensions, duration: duration, resource: resource, firstFrameFile: firstFrameFile, stickers: stickers), text: updatedText, entities: updatedEntities, privacy: nil)
|> deliverOnMainQueue).start(next: { [weak self] result in |> deliverOnMainQueue).start(next: { [weak self] result in
guard let self else { guard let self else {
return return
@ -3565,7 +3561,7 @@ public final class StoryItemSetContainerComponent: Component {
})) }))
} }
} }
} else if updatedText != nil || updatedPrivacy != nil { } else if updatedText != nil {
let _ = (context.engine.messages.editStory(id: id, media: nil, text: updatedText, entities: updatedEntities, privacy: updatedPrivacy) let _ = (context.engine.messages.editStory(id: id, media: nil, text: updatedText, entities: updatedEntities, privacy: updatedPrivacy)
|> deliverOnMainQueue).start(next: { [weak self] result in |> deliverOnMainQueue).start(next: { [weak self] result in
switch result { switch result {